/*
Copyright 2023 Flant JSC
Licensed under the Deckhouse Platform Enterprise Edition (EE) license. See https://github.com/deckhouse/deckhouse/blob/main/ee/LICENSE
*/

package hooks

import (
	"context"

	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
	v1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"sigs.k8s.io/yaml"

	"github.com/deckhouse/deckhouse/go_lib/dependency"
	. "github.com/deckhouse/deckhouse/testing/hooks"
)

var _ = Describe("Multitenancy Manager hooks :: migrate projects ::", func() {
	f := HookExecutionConfigInit(`{"multitenancyManager":{}}`, `{}`)
	f.RegisterCRD("deckhouse.io", "v1alpha1", "Project", false)
	f.RegisterCRD("deckhouse.io", "v1alpha1", "ProjectType", false)

	Context("Adopt resources", func() {
		BeforeEach(func() {
			var sec *v1.Secret

			f.KubeStateSet(`
---
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    meta.helm.sh/release-name: multitenancy-manager
    meta.helm.sh/release-namespace: d8-system
  labels:
    app.kubernetes.io/managed-by: Helm
    created-from-project-type: test-project-type
    kubernetes.io/metadata.name: test-project
  name: test-project
spec:
  finalizers:
  - kubernetes
---
apiVersion: v1
kind: ResourceQuota
metadata:
  annotations:
    meta.helm.sh/release-name: multitenancy-manager
    meta.helm.sh/release-namespace: d8-system
  labels:
    app.kubernetes.io/managed-by: Helm
  name: test-project-all-pods
  namespace: test-project
spec:
  hard:
    limits.cpu: "5"
    limits.memory: 5Gi
    requests.cpu: "5"
    requests.memory: 5Gi
    requests.storage: 1Gi
---
apiVersion: v1
kind: ConfigMap
metadata:
  annotations:
    meta.helm.sh/release-name: multitenancy-manager
    meta.helm.sh/release-namespace: d8-system
  labels:
    app.kubernetes.io/managed-by: Helm
    foo: bar
  name: test-project-foo
  namespace: test-project
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  annotations:
    meta.helm.sh/release-name: multitenancy-manager
    meta.helm.sh/release-namespace: d8-system
  labels:
    app.kubernetes.io/managed-by: Helm
  name: test-project-deny-all-except-current-namespace
  namespace: test-project
spec:
  egress: {}
`)
			f.BindingContexts.Set(f.GenerateOnStartupContext())

			err := yaml.Unmarshal([]byte(`
apiVersion: v1
data:
  release: SDRzSUFBQUFBQUFDLyt5OTJXOGp1ZEl2K0s5OEVEQlBWZFhGZlNuZ2U5QnV5WlpzU2RaNmZYRkJCa2twclZSS3BkVnk0L3p2QTZhOHlFdDExNW52bkRQek1BMDAyc3FrSXNoWWZ4RWsxWDhXTXJQd2hSK0Z4UzdkSmx1Zm1ReU8zeFltTTFPL0xud3RKRmxZRm43OFdRakplclA5UDg2djB1WFJ1OEtQQWtHRWZzUDRHNUczU1AwZzdBZEdmMUF1bGFLWTRFbmhheUUxdi82Qy9vSEpENmIvVUpSclNhVFU4UXZPcDM2YkQ4MC9iR0NkckxiSk1pdjhLUFJYMDdWeC9yOWd1VmpGUVlXdmhjM1diSGVid28vQ0M0dC9mQzNBekt5M2Nib0x2elhPYkUzOCs2OFh1UGZyellrSitnUDlnUXRmQzJhVkRGNGU3bkdrbXk1aFh2aVI3ZEwwYTJIckY2dlViUDJtOE9OL3ZSQi9lZmc5UHRpc0RQZy9qbWFSeHBYazB5aGM5ZEMydktnZHpHQ1NRdFplV2NKRTQyTDhVRjVzVjNiUkVZMHFuOW5oNEJIcXRmdEpaN1dkakxxelNiMkd4cmZMeTBhNXRCc1BjWHFkbE9iWFpTejlzYmpya05rTXNzN3VkbEhiVG5vbEhUckxhZU5pSzY5NnBaVmR0RGR1MkUwYjVlWnlNbnpZanNqRGFwenFyU1ZkYk91RFlPdTFaREo4ZUd3a3hhV3RwNCt1WE53MXlyTzVHYlpSbzl4TS9VVTN0WXR1T2luanJTVjg1ZXI2YUlZOHUxcDAwekhaTGkwZFBFNTZmR1dQT3JXTFdtTHJnM2tqS1NieFg3aG83dTF3Z0V4OWdPSEk1NU5oZTIzcUdnUHA3OHhRN1NFYmJDYWoxdGFSR2hxVFdRb0pma1BEWFRUeHBOZFlYZlpLcWxIbnF6Z1BtM1dtclNSZjQvYXFoeTQ5M1d3YjlYUTNKZzk0VXU5UEc0dFphdXM0MkhxYWpNZ1dqeGVEQUl2bWJJejFBUmFhK1lHK0h3LzAvV1RVUkdZNFdZMUpEVTE2amVsbC9XRUZ0RE85U29wTHVHaXViTlpkTk1yTitYVVpwWEJzVEsvbTdlVjQxRVJYODZpYmZweFRuTU4vRi83eDlSUE5yLzAwMld6WHgyOGJEMnUvL1dmMVgydW5ZOXBNWGZIWHVqK1Q1UllXZzh5TTJnaXkrY3NZb0tYWm1QUkZvOTVoVjZPdGJKUjV4ZFJyUjFmbTEvRjk0d0xyY2xLYy9yWDg4SDV5TWRoTUJub3pIalpUZTlGS0d1WFpKdkpxbE5uMHN0NWRqV2xuMmxqVURsQnVUQnNMak8xRmQrWHFnOTE0eU85OUQyL0hRejZia01HeGtjeW5uK3R4aGZ5b0ZOZTBkc05tQ2d1ZXV2cmc4V3FSN3E5SWR6OG0yeFFXN2IxZFRGWVRzbnEwaEYyK3lxTzRtOVQxdlNHRDQ1am8zV1NSWmlacjcrMzlNcTVyZXBWT1p2WmlrTUtSWjdhdWsvSHdzTE5EUFhmRGh4UlF1aDBQWFh4M25BemRDbWozNkh0OGJrbDdQUmsxN3ljTG1JWVJ1dnhjdjd1TlgzOWIrODF5dHdhLytmYnk0cDJpVDhMdHBwTkZ1cHYwVGc1aEZvTjdWK2JuU2tweVpXUlJTZDM4ZWFPeTFGRXBrL3FBUlVHM3lybWdvclBQbzBPTmg5MlpxMWVuMS9kb2FvWjhQaGxObytFK25KU0t0bGVkMVF6cTZYQXlhajZhb2Q1ZEp5WFM2cXpXY2V4MVVybys0MzE1Ums5RWc3QXhpTnllQk5pczU4YWVDNkpSTGtsL1JGTkhVbVRLYitkeC92NHFLYW5HUlhjL0hOYTJ0dnlwNHo0SHA5UXVPdmwzVDNJYTdDYjVPcGVYSCtRV2paT2tDOTlydk9WMVhFN05SUmZCUlV0Y0hYVm1SdDNOZU5qWWpZbmVYaEczY3ZXSDJUakJlMWpBZmtKU0ZJUGQxUkh0eDR1SC9UaFJaRkp2NE92YjhXTzdQcmdmTHhvUDdkdnB3M2pSVEZxM2s2UjkzNkRqK3pscFBkYnV4N2R6TWliOTQrUjJOcitLQVRSNTRiVjNvKzdLWHJSMnNHamMzMWFxaDFhNStQT0tuamxYdWJ1MzllNzFyL1g2TEkvaUhCWjY3NnJ0dmMyNnFiL29mSzdmNmV0NHV4alFVOUF2aXB0ZWFXT3BTeUVwemkxNW1IOU1CbS9HNjhaRk01MlFBZXN2QmdjYkUwMi90ckhWaCtpOHgvSHdNRzJrV3ovdVlkRXFJejdxTmFJdHBBNmQ3S0dSb09UdFhFcXJTVkxLWERrbWtjRXUydkZrNVBJMVgvYUtwSFY4bWtmNUplQXNHblcraitOZjVkRTlXcUpSaCtpZHF3K1lLL1BlWlBpUWprZnRtTHdTTXp6UjY5ZjFvNnRQVnI0K2lFbHI5UnpJSXUzbmRZNk91VHdlSjZQT3RCbVRFTzFXTE9Gb01wcWhxN1NaMnZwZ0JpUUd1K1pxa3E5cDBMRzBqU2FMbEUxR3JhVHhGTmhPdGxiOFlLOG5mcTgyT0tqUFZuQXNVVE44MkRUcXRZMnRhOXE0R0R4R1A0aHlkbkVORjgyWlhYVDN0bGQ2ZERIQkxHQTZIazdRWk5TWW12cGdZM3VsNDh0Nkx3YUhDVzNPWWtDK1RQVC9TSFpYbjYveGpUNHZlNi82ZVY1WHM2Wnkrd015UVA5ait1WFNjVHprODg3dzRXRHF0V3MzUk5QV2JYRWF5aTgyZTZiSEUvL0prTTlmYkt6ODRrc3ZkdFVuc3oxa0Vad001cmxmWGJUeE9Hc2pTSXFIUnFWL1BCLzdudmI1M0c1NnBRTXMwcDJyajZlTlpQQjQxY3Z0NnRWWEJ1MmxwVTAwR2ZKMDh1K1ErU2UyOVg2dGpRcWF4aVEvR2MxNmsxRnBNeDYyMDg3d1lYTmJUOUZrMUp6WmNqRzVyTEh0SlQxc0w0K2QxWnY1OXlJWWU4UHJ0Tjd5K1pqbi9ISXU5NmZQOWNIQ0RIbjB3ZG1rM3RsQmpCdUxsRjFsNmN3T0R6dTNxRzNjOENtSHZjNzl4Y2JmeGJERHUzR3ZBS2MvV1UyR0QvTVBNZkpkREh2bS8yRmM4ay9GMHNjUHNUVEd6SmVjVmh1T2h3LzRLYTRpV0tUYi9qUGZ6K1o4dHQ3ei9IVFNOMDVkdlRZZmo3cXp3VWxXSjc5NkFabU5GSTRua05tOGlERmdzdkxsWDgzbkV6MCsyVzB6eHExUDV6YU42NzYzRjRQNSsxeDZXUzQ5Z2JuYzF0b3YzeDJjZ05OSEd5K3VHdVg1NytYc2kyWUs5ZHB4MHVOb01zUXh4K1JBKzQxOFluRVI3WG5VL2Z2YytJeWRxaWYvK1J6N3ZOalYrM2xIUGVZNHhNY0NwOUo0NjJzeHBwYTdaL004cmVsTWo3a3Z3Mkt3TUtOcHpydHhocFVheWZzOFc5dE9SdTFEOU5QK3ViMUdrRncvSys3aWQ3TTM4ejdEaGMvOFppdFhuM1Znb1g5T1lsR1d4N3BTTE1MUUpDa216VkhyWkR2bmRBZXZkdlJlYm0vdDgyRmxGNFBIcC9oNXNQVVUzWjZLd0dSVVo4bGZ5aVRxbHc0MnJucEc0Nm1JZXN0ak5nTjBOcmVUVHkzR3c0ZkhkL1ljYzBRMmlmS3I1ellrYnA3L0hyWGU1K0tJTjVialVmdEZKKzkxZEZwYi8vVjdyemxrazhlekNucmpGK05oZDM2VlBjdU44L0VRYjY2eUp6OUlZdHcvcmUyWjdnZCtGNldqSmF0MFRKK3czbWUrOHpzNUxzL3ZzeG5nczFqd21UMDlyK01UL0dQcXRjZmJzKy9FdFo2SzZmYzQ3TlYvejc4UGk4R2pHejVFVzhobGY5TXJ6ZURpbEtNKzZQM2RQRDdTUGEzVkRNZFR1OUF4MWtTOW5kY2c3M1I3eWt2OWQzT0lQbmRxVUx4YlE0NnJYUHFxMStobjNlTmsxSTdGYUNzK2crTkhmQlBuRStWMEpzL2M5LzVTdm05eFNPOHRqNkp1MUdzSHlOZisrUm8rOWRGNmlrenQyWFk2SCszMVZaWnY4Vm5NTGZpOUQ2THBlRlE2NUhiMStSeWZmT3VYZG5DK3h1T0g5WDFLODI5eHpIdGRxRVo5dFRkRE5tMmtEN3ZHcVY0OG1pRjZFemRlZkNON1IvY2pMam5BWW5BWWo1cnBWZmFhVDJKTS9GV3VnYWY2QU9vUHF5aTc2TmVOV0RlZmN1SlpubmoxMmFlMUhKN2o4Rm5kZFRhKytvN24yOXJqRjVqbExWN0FIK1o1eXRIbjgzaTErYlA0ZklxWHJqN1lRdjFoNW1KOTlCbnVmVXYvZzgwT3pyLy9IanY4SXFlZjRZanorWHpJUFIva1VaNy9MZzd1djlDTnVhQmMrbWxKdW11VW0yQ2ozZ2E1SGYwV2huV2pic1R6Szcrb0lUUFV1NnVzaVczOUEzNzlHejBYMytuNXVkSDBMN0dIMXpoT0JzbDQyS3pFbXFJekdpQnpobjArNGtmMEJrZSt5MFVreDQrajFnNFdlaE4xYzhMdGc4ZXJVOVB4YkEybjNsVGo0akI5NG45L3FrbC8yVnY2ME5oMTk3V1p2U2d0eDdmVlMwUFMzYVN5bk9ienIrdWpHYTFtcnA3dWJackwvUy83VDA4TjZWL0s0WU04NDV4L2dYVkR1WFI4cnAwYTVVYnU2eTk5akdlK1QvbnlPaW5sdmJiUHNCUFFVanArekgxMk5pYnRGR2k3TlJsTlVsdDU2cG05eXZGb3ljTkwvZ0E2U0hKYUY2MThuVmU5MG5NL0x1ZjFYaDh2ZWVEVWd4UFJKczcxYUQ5cDlrK1NjenJubU9zMXRuKzJ6ci84emovWnF4dS8xM1BDajNuRDlVTThmbWVqZjRmL1grWDNMOEgrei9PQVJXMDNJYmt0WVZzZkRKL2ttL05vWHJUeGVKSFA4VU1zZllNZGY3SG1zMDJWejJMaEczN3ZiZm55bjVGL3VmdThvZk4yL21VK2ZMR1gwV0RqNmltYURQbk1MdHI4ZGxqYjVRM3dzN2o1S29zWDNieWxWMy9lRUhpeDhSaURVb2gyVStZdk1mTUpFMXordWlmM2tYNGpQYXNGaytMODZ2enorenoyK3YyK0g1WFN3WlA5dnJXaER6TFo1VFhUcUxrYkR3KzdGMzNVdWh6eVhQY2E4NS9weFhyZ25NOVpUL1Y5TGJLenRQUHJlWDNBNkdlMSs1enZHN1czMzJ0Y3VKV3JUMCsrMml0bXpWRXJhOVFuZXhmelduMnloNlQwV2crV0lZVWo3S0xNWHRmMG9wL1hOVjJraDBuLzJmWSt5SC8zSWRhVlk0MldibjZ6Wm5uZFFIcVJXV2QzSG12ZTFGQy93ZjlYc253VG8vcXZ2WlhudnNSYk8vbUFwYzQzUkgrSkc4L3d6RnY1dmRwOXhMUjdOMnJlVDBidC9xZVk1eE1kUEdHSitlVjcvSDNSUGRqeU8rejJpVDMrcGR3WE5lenFzejBzVWpFZWRWZVdzTjNUQnV2WnB0MWYydmd6VnZqVm1oL2RzUG5rMzhYNTVlZ01YNzNZeEgvL2QrRWYvL3RyWVcvU25kODhiNU52WU9ZWDV2bFRTTkszRytaL3pIeTZTS2JaY3UxZnQ4N0d0RG1IdzJwdVNmdXh2QmpzeHNQbVpqTHNYSnE2M2h2YXVqUkRQSnVRd1dQNVRIVWoyazJCZGgvTEN4MUxvQm5VNTIvMjd3N2V6cGJMK2ViNzNxU0pNOXNrbTM1ZnJaZjNIcmF2akJ2SDZ0Nk4yc2NyMGx6WlJLYzJHMC9IaTlxaktTNHZHOGRTeGRJU2gwV2FtWXZPdEhWZlBMYU9wYnF0MTNhdVhMcnNvMVljMHpMRGRtcXpkam9wbDNETU81Q1VrS24zcDkzNjRONlEyVDdmRDZqbGsxNVkydHcycW9PWXE0NFIwd0hwVDd2RDd1cVVSNHJMYnIrL2luNHpKb05keEZlTldqdWQ5RXBMZDlFOXdPTnlmOXJubXVGeHd1OHRRZnZKR1k4cmNyNUpyeE5iMThrVndUTXpaUHZKc0wrL3JhYVZicC9mZGp2TFN5QWF3eUppSS8yWTcwZlU5TVlNR3pzZzA4dnlZb0x0b3AzajVVWk5oK2ZOMWhGV3k4dlJKdWJTKy9Hb003MnBQTlJ1MGZqeStmMWdNVGdDU2ZNTldYZGZ2VFIwa01UNE80bCtsbU9vNHZZRjM1elh4cVBXRS9iNVpKUDg1TitmN21XZTRtc05UMGFEOURvcEp1ZnhCNDZOSjVydWFPbmdjSjJVdHVOaHVudWlsL3I2NE42TnVta3ZHaGpTdTI3RWRGbEhOR3BiOTZzeGZScjliM2EwaEwvVUU5ZkpVMi9yeWI4TkdhUlFuV0JiZjdoNXhoSzlJVzlQaG5nUDJWdzA2dEcvMnVrVGo1L1FuNnpzUlRlRisrVTBGRjlyL3ZNZVJDT1BnZjNrT2ludXp2RHpFeVk4dlBRUFFtZjFabE05K3J6Sng2YTd5ZVB5OHFyM2NxRGdMSGRqYkJmcGd4djJkMjlzYVpIdTR4d210TGwzbzZKbzFITTdpcm8vNGJzWGZkWU9wbitTTVR6RytaZHM0OE5oa2VhelROL1VFbkg4OE5qNDJVaWZzYTgrVEViTkU2YktXaUtuTlcvM3V2MWF2OXQ3b1hFV2krT1k0blI0Yko2dDUyWGM0NWpvUTk1emZaYmp2TDF4b3phYWpCcEplVDY0NlU1WE1hWXQzSkRmbi95dkZFYTV2L0F3T2s1WGpZdmMxdC9HODFzMHY2eS83RE9JNjhYcW9WSEd4MFlaZHJBWUVETWMwS3VzbWNKb2tFTE1pZVFVUTY4V3I3bnJsTlA2MldXMG1iei9WOXZBWWpDYlhLUTFIL0ZqZlRDL1RWdTZrWFNXNDJkY1cxa0trMVduVjhQQnNWRkcyL0dvbVQzNTByU1J2SzlmRzlQbWtUL2FSZTBBVVo4WHJUZTVHZkRXWFMyZTdDNTk2aW1WUzZweDBVNXR0UG55OU1tMml2cm11Yi9kbTA5RHVmajBIS2F0ZTdabzllYko5VEhHdXNHelg1M0hoZWxOVWt5YXRVbnB0cHBXTzROdTgzYnVRbjgrdU8xWDlYVWZEVUsvV3V2M3lvMUxmMnpPYlAxaDc4aGczcmhmUGZXS0Q5UEdJdnA2ZXpZaDBmYlBkZnpoY05GMFZHNjh3OXdEYUNTSHFhdlAwc2JGYTcvdHFZNWF3YkVVZFRTejVSS3l4MU84SGc4ZmpwTmhiZTU3MGZlakh0TGQ1UGptZ0UzTzUyVmNmOEJpbnAwTXU5ZDlmTWozM1U1MmRiSTVXQXlRR3pWM2pVb3gydEhDbkhvLy93b1pJY2dHYWVpczh2aGJ6dEJsZVRIYlc3SVIxMWtUMjBpeldreE8rZm0zRXVMdGNlWC8vNlQ0LzNwU2ZBWEJqNThGekw5cnZweUM2UE9wc2hlai81QW9YeHpsb3BVODhjbGdvVEZVbGxNN3JLM3Nrd0ZQUnJOMFRBZG8wby9HdGIyeDh3R1pERG02VGtwMjFQbkZtTFRON2FLOWhJWGV2UlRJOTh2cFpGSGJ3SFBTcm0vVHlhaFVkOE9IemUxVGdBU1U3bTZIZzYybFRmNGhxV2ExdWhrK3hNQXRHaGV2Q2M4ZnpvSjd1ZmsrQ0lwR21iOXVrUFpPamE2cjR1ZmZPU3VZOGtTYk4zNCtMNmorbnlSY0RHUXd2eHFtdTZ2UmE4SDAvODJFMjYzZFZnZS9uWEJkbE11b2xUemJBNUQySHVwOWNTYmppcjBZeEtSMmJFeFBBU3NXMUpOc3NCdlR2SENaanJET3dWbnVTNzJTTEg5V2lQL1RpZmRoZnZ2WHlUZktOaGJ6dVc1NlE5NTVsK2lUWm5sMi85eWd1YjVmL1lSZWNUc1pOYVpYUFR5REJVemRXWkY5bm9UUGJhbFJkdllxYSsvR285S2pxV3QwWGlEK1RpSisxN2g0UGlDaUcrVXVlbTFTbkpMenV3VG9HaGVINldTUkhvRjJza2FsOGFWNVgxMDE3amQ1VW56MjhUR3BvVWJsb0xwOVhXOVVXRnpIc05OL2FIWmo0dW56aXhGdTF2cTRkSE9idG1zalhDb05xdE9rbkcyUzhmQWhQOHd6S1RmRWsyOXZHdVZtQkJtUDQ2RkxHL2ZMcFA5bTd2MjNTZnBzUGFOeUk4NWpsMjhZMXB0cG85Nk42MGVUWVdmWHFLYW9VVThmR3hlRHg4bXdNelZEZGtycVo1dG9rVzcwb1VrMTNmVS9nSURHOURsUm51SmdNM1VYZzZOTmlvZmMzeGJ6dklud3I1QkR2dWs2UXBlUlJ2a0VMcGVXNlBYMS9lcm9oam5OWW1PNmpFWHpQNzRXWUptRlpGcjQ4V2ZoL3hqbmx0bjF5cS9OZHJsdUxkMHU5ZVdaaC9sbXR5ajhLQ0NudU5lRVNzV0Rad3dIckF5MVVpRm1HRFVCQ2w4TDAzUnBUUnBwUWJyYmJQMjZuQlBmcmMzcEhQMmZiOCsyT3cvejJYSzM4WDhreSs5N1hQaGFnSFM1YzNIY2F1MUQ4bEQ0VWNpYzN4ZStGbGJyNVQ1eGZsMzRVYmhlK2F5M05URFBEOXlmK0ZTV0M1TkVraytmLzBpWFlOTEN5L3NjV1B3b2xIUHlYd3ZPQjdOTHQrVnVJejVjWmx1VFpINGQzOHlUek9VRFA1bisxOEo4Wi8wNjgxdS9lVjBFL29Qd09NR2w2KzFzNXJmbFJxVWJINk0vTU1aL29EL1FkeXpPMzdlWHpzY3hOODhySkt6d3RiRHg2MzBDL2owSlFzZ3ppZGZGTmphbDVYSzcyYTdOYXVWZDRjZDJ2Zk5mWDRWWmRjblRyWVZhdFhEMi9GenVVYVF1MmNCeTc5Zkh0L3JhcnBmcFRXb3kzOWhjSk5OWmVpenVUWklhbS9yQ2oyRFNqWDhWZXJ0WGRHN3RONXZ6eVdKVStHMjF0TXlKNlM3YkZuN2dsOGY5ZnFOUytGRmdXRkJxdlBxbWljYmZHQWoxeldoSnYyRmd6anJoaVFVVjE2RjZLdzlKU0NBWGJTUldPbmFYY2I1Ly91TkYxNzN0Y20ybXZweWFmTHJnVjdOdm0wMVV1WC9ZK2l4S3BualQ2UG4xM3ErTHUrM01aOXNFY3IxMy9jK2QzMnhuM2ppL0xxZUp6N2JsWXVGSDRWdjhwMVN0TjlyL1ZhNTJieHUxUnJsNFc4MmYzbVd0UnFOU3ZTMlhpMkV4TFI0YXBlSzAwYkEwWE81dXd4d1pkS2gweHMzTDVhUXgyME83MktsZWxUckZRLzIyT21xVit2VWk3bGZ2c3VKRDYzcVNOZmMyNjJ4anRQSVg4KzJZVkE4WE0yaTM3bHNQcmR2cVErdStlbWpmdHNnd1BudU16NHFzZFY5OWFGVmE1QzRiM2hjbnJTNGNhcDF4WmREcFZLb0h2b2g0eUpYeDZWWkNEOStQNHh4N2pmZnpLWlU2eGNwZE5wMVdiNHFWY3JuWVdaYW4wMnFwMkZwMndyWi9hRjMvck54V3Y4emdTRVk3Y3RTanB0eXNpeDB5dVlIWmtRK0d0dW9PelRsWGQ5bDMyektqK3FycWJoNldsUjJldEd5em5PM3Rkb0xtcTNJMnpHb2JOTHd0VFg5V3A1NWNYWnVGSEMyWDFmbzArOTVybThyOHVuU1hoV3J4dU8zSVhsbzA5Mm03ZlhsVkxzNHkwa082TlF6cENFMTVOVUZmdW9OTytYdmk5YTdjWEtjWDJYemViTW5pbGR2Wkw4Mjd6T2gyU2ZyeGQ1bldCdjZpVmFsbDdlLzQ2dklTOGN2TC9uVjVVYi9GTi8wTDhtVitlMm11MnhUSnkySVl6NXRtZUxNd0c4WXU3N0xCb3F6M3JEVHFYamEzWHpJOUs2M0hEZGI2dmllOU1idm1WL1BxQStxU1JiZTd1cG40Y2IyWVZUZmpKZHRXc3YxeXRWNWNOeXAzMmVoQmR1akY4ZllvNm9uYXNjbFU3SHhtNnAyTFVPOHV4bzFwb3U5Vjh5Y3FGdy9WWXRHMFhhdTJPVlNtNDhxZ2kyNktuWXZ2ZDFtcDJLa1VwNWZ6VmxGRkMzSFZRN1gwL2RDcHRZcXRVakdvdzBVbkgzMWRLbzJydGZhOHI4cWRibTFSR244WmJpNDNZanU0eXk2L1R5cGpjWFBaS3MxUEZEcWRYcXRVTGxjV2syUEVGemttcEROK05XelBXa1ZVTC9kKzFuc05TeXVkYXFsODZCZnZzaUpybElxZDBucDlWU3ZLOWZ3U2xYK3FWYWV1dXMzV2JQVDlVSkh6WW1QYTl2UHVlTFkrTGp2Z0o5c0g4MzIrdlg3MCtPSEJwM2VaTEUzNjZ2SG1lbEM1WlEwK1dIWkN6MWQ0ODNKZG5GN0NyVDkrYVRlcXhlRldyUjl4NjBDYnRmRDlzZlVRekY0MEZ6dXliSS91c3VzMnJ2WHA5M2xuNGIvWUMwSEpkU3U5Mm44ZlA5Z0wxelVQMk03TGo5WHBrSkRIb3Voc3F3L0o5KzlYVnorbjdlYkQ5WksweTZPN3JBazNtOUorUlZTNTBtL1hMc2I3bTUyaEQ5M2JFWWpTYXZzbHljUzQ2Ujk2QStsMnpYVmx0M2dvbDY4dVY4WHYxOFhyTVFxTDRWMjJVN2VvcEx2OS92U25HcVRMV3EvaWlnK0w3K25EbC9hb3ViMWYxemNQVGRVZE45RzJGYjRzazhIOTVPS0JRMWpYU3VhcWw2MzFYVWFPMytkY3BTMDNyYkhXbCs1bTFQdVpiRGFQYktYRDRTN0xnMGkxWGZra3NMekpRcjhYaDByUnh6MTVpVU85WlhjNTdoNTI5ZTd5MHpoVXU2M2V0a3JWMXpqMHJsb3MrdG9CSFZ1UDFSaURqcTNiSW00OXRrM3RnQjd6WjVYcHNYVmJQY1JuclZMLzRTNnJQaGE3cFdsN1VDcTJic3VML0hiVTBTNEdhREpxSGFiVGF2TGUxb3FkZmpGYVd1VlFqTzh2NzdMaU10cGRlVGMyYXJSOTJDd25XdlorVGlyWG5jMnh2eWdkdlg2OFduYXZqb1BzKzdaVWN0WHZvWDM1dUxDakt6b2RIM21YOGJ2c3NmTll1bGgxVzFlYit6WkpocTJMeGNnZEx4YTAvWDFmVk0yTC9mWm1NcnRjeU92SHRQVnozUjRzbCtvUi8veHlvNzlmeXQxaVdCdmNaZXYrMWJxL3FuK0hwREtxcjJwTFhPbjI5bytQdDF0N3M3eElLdDFIODBYMjlpWEw5NjJ1OGZQSFJ6VXNqb1c1N3kyRnVLeVVydSt5TDhPSGJJRHNXTmVtazJISkRxNDN4Y2RHdWRRM2hBVnhhMjZPZHREbjgrMmhXS084VmFsdFVLTnFrdUpqWlNCTDJXN1ZYOXhsNG42MnJUS2xoODB2MTk5dkQ0dVdTUmtsQzFReW9TNit6Q3F0MnMxYTFXeGFmV2l1RzdTNXY5d1orblBXZllRQnZyN3Fjbk9YWWRPWDNsNlFLbStnZys1V3hvYktZdjJ3M1BwalZweTJTc1ZpL1g1NFd4cTFpaXlQRVpWVGxLa1dENDN5cWxLOHVjdWlKaSs2ZWN5cGxtNkxsUmlkV2lWMEdqM3RERXVsMjBHTlZXdVBwWnR1ODZKM1haMWtEemZwU2l6dmU0T0wrK0xnbVVLMVdya3Z0cWJUdDdYclozSG5GSFhLbFF0OFpVZmxScmpMNWwvNjM0dWw4Y09TOXd5QkpmTERpOTUrekllZGNxYStqL0dvUkg5V2gvT3dUWkhjZUhPd2c2cDBYTjhUUFV2QkhOSFZYWmFtK2xKcXZoUFRRekpneXEvcll0VGRCTmpnK1dUM2tLMW9xellmbGxmMVVFbTdlMDFjNWkrSGFIVXpyNkwxOWphNW10OWxqbzF1N3kvMzA1LzF3WW9mMUtyVWJNK3BmSnpYcitqRDRBcC9HZG92RjZOUUhjL3JsNGZLc04xb1ROZFlkb2JUMGZHd0M5UHZGM2VaV2h5VFVydjYrUFBxc2ZQNFpWbTlCUHJkdEZzL3I2dnJhYjNWckRTdmRmWHdaWHgvdjlrOTNQdnI3aytXN3FxU2ExSGNOY2J5c1h5WEZmMnlOMnJPcjZ1WEd6L3ZsKzRUbTVHWk9kWWVzaStaSlJjVjFuYVZMNXdOcng2VGJGQmZqNGRzOEZpNUg0cUhpK1JXRGgvNmQ5bGw2K0g3UTlNOVhrM3IvZCtQTzIvUjd4ODV3UDN3ZGxQNDhiOWUzdi92TXdUOEdUcGVMeGQrTy9PN1RRL1dadVViMmRhdjk3R1VvT2dkT1A0TUdQc3M0bE4zS2xseXZxdDFzbHduMitNM3lBSGZHUXgrUW56cnpLVGZGdmtYemk3ajV2WEhOMmUyNWh2azljRHlxUnI2OWpyRHB6Y2ZIbXd5czlyTWx0dHZjQUxScVY4L3Zja3Y3cG5kZHBZOVBkajdkVVNYNmJmVjBzVVh5dzJZMStFaFhSNitQVzFmZmkzTWZMb29mQzBZdDBnMlVhemZWc3MwZ2VNM24wMlRMSzRHc3VRYkpHbXlXN3dzNExsYStyWmMrV3lUMTByNUhlTEkwV3hucC9lUjJHblJwL2wrVzBYVWZ5YU1iT25PUDI3OWVtM0NjcjA0ZXhhVi9zMWxtOCtYSDJuNzlmWnMvSXNrSHQrSXBmRDFWN2VqUDVIL0c5bS9WY1RDYjljSmJMNFpaMWJiNTl2Vm4wbjZHZlk3Nzc0dGxsbXlYYTZUYkJxbjhmTGhtMW10MHFjU1lQUDJEZXcyMitYaTdiTnorenA3L09vVnYzcis3WTM0MzQ1YW5TYVZLK0trdnBPc25ZL21FVzMzZEVWK0dvdXdiOUVnSG5KRlQ3OXRac2xxbGIrTkMxLzdkQm1ybDZpUTJYcVpIU1BSNTN2aTMrQ2x5bDJ1ODFJVTFqNnFjWlhrMzNCTDJDMTh0bjB1Z2xkbURkRXdQY3lXMGE5bnlYVDJWQ01tYWJJOXZwU0pTWFp5cy93Ky9MTnIvcG5iVExkVUxOK3Nsdy9IaUdEK3pLM2tONUJNYVI2UnpLMTVSakw5MG1vdzZiYmRabHlUVnovdDhpWUx6aCtLa0piM2gwTjVPbTVFWlBONGoyTDJPdHhsemZ2cXZGVnU1TGltK05DeU9hcnA0ZU40VWJzL3g3NVh3MjNxZS9nd0hxYkhWb21OS3JlTngxaHQzV1d0MjhaRHF3S0hWbTA1cXR5MjR0UERkZVhsMmVIdk9OeGxuL0tvelEvVncvamlhYmJsWXVkbDVwVmlCeXFkYWJHNlRPdjhldXZDWFpiK1RML0FiRmEyL0dhL2ZSeGVsY2E4WkN2bThRRlAydFhiYVozT2QvdGI4YjB5YkMzMnR6ZVZSVzkwdTJ5VVduYlZQalRiaTA3L0xvdkZCK3lhUTNML2VEODA3WEtyV254VGE1d3FqV3I5VjVYR1hmYW0xcmpzTlhkNDNlZ3ZHb3ZTa2hXdjlzUEZqbXJhUDFaNnJlS3lYaTcvclBkYVRKZUtyWElSell1dDZyaDhselU2NWVWSTBTL2ZpNGZhbElRRjM1bUZwaUUxNjQzUzM5bml3VUFIWi92eFRXVy9TSXVOV2ZFR2t6MXJycTdMclYxbmUxdTZ5NXJsaDJFR2EraXVPZWtmK3ZmZkIrM213azZLaThkcC9XOHptVCsrTmJkcStiOXV1bzFCOGJiNlg1ZlY4YlBGWFVDNTJLbFdHODJMeStseXF5L2JidS9VY3JvNVpEQWRYRlNyelZibGFqV1plYVI3Ni81NDN1MS9ieXpQVm55WEZRL1ZpMlcvODBhRC80eis3ckxQTlBoR2Y1My8vdSt6MVg2NmpwZ2hYNjZOUDNVek5xY2ZxVmdzMThmem5rL010MHBnaWJUQ1h3dUxKRTJUOG1yM2RnUm1DdjNqSC8vNGV1N1RzKzEydFhuMjVOWlQ5SDV0S3pVMm01MWZ0MC83ZjZuZmJud0c2K05xV3poUnlWdHpaMS84eDB0TWUyN1hQSWUyVldyQXgyQjA2dTJzZGpaTjROUmx1bjI2RGwvNFVmaS9ObjlrenUvL09INUxseHUvLzJNVy9naXB5YlovUUI2MVA1VUZ2RmxqSk83M2ZuMXM1N1A3c3dDclhlRkhnU0tVaC8xY2JvVWZCWTVKS3ltY0M2T3hNTk9UU0Z3eWZhYjlrcnR2OHRSZFBXWHVFOVBOZG0yU2JGdDlXQzNYMjd5L3Vaa1p3c1VQNUt4blFuQkROTU1nZEZDVVNxYWN3aDZBT0d3MWt0Z2l3elNoUkFRdE1kVWdITkVTUzhFTkszd3RUTTNXejcxZm5aTlZXa3ZuSlhDblRCQWNvNkN3eG9vQXQxaDdiSDFRVmlBanZRYnV0VFpPU0NHSUIwQVNTWVo0QkFMclpIKzhlVzNJUGxFT1hscXJCTUhCZU15b1Zrb0RscUI4MEVwUllvSUhRcWpnbGdYQ3VEVWtJQk13TVlZN0JaamFxSFpyTmdrVWQ5dFovcnNwdWRKZlo0NE5GY0s1b0JWVmptZ014anNyUVJ0UGpiWmNDZXVEd2NRaVRBbGxYbUhFdlZVZ01TQ3VCTW83cUg0MUsyK1NrNld1WmhEL2ZLYlBNSldBcGFKR1lpUzE1b0l5QmNKaUZRUm1TaUpNaU9VU0VRYkNTYXNsa3NoNmJ6MUJRU0xFVHZUZm12L3J4eUlzZkcrWjdzOGxoZ1hSQ3JpV0xGZ0VXQnNrQUtnUWluaEdQSFhPSUEwK2NGQ1NCaHNNRFlnR0ZheWttQkhQZGVFTnc3SkpzbnNQTVltL3JrbElGQVJ5VGtrWE5EaExITldTV3NrNXNsZ2liNExuSkFodHRMS2VLb081azF3Wmo3VU15TEozSEY2UjNRc0hRUzN4UWpJUERoR3Z3RHJqUFE1RU9FcVJDNTRFWjdURVRBc05TSHRMWExCZUtlUVFOWkp6OFpiRDhIUTI0SXc4NGlwb0pveDFIQ2hUV0RNYXVOV0dNQ3A4b0FKSkNKSndSeXdOWUh6QWlqSk5wQWdXaEpZbnBaOGdUOVRIMDE4dkprc1FXRTJORlJZUllpbDJRVElWQk1KU1NpRFdPcWVWTW9BWm81UTZ4TUY1U1F4V1FRWnBqYzZwNTlEN1ltZnpEdm1maGJWUHpSc1drbkVwRlZJb09FKzROTVp3N1lteUZGRWFwREJFS0ttbzhrcGk3WUVGd0pZckdienlncElJdEhaSnljRGM1eHNUVDFTMTlCWTVGNlJsVEJGd1JIRVhMZElJTGhVeWhqT0h0QVJDRVBkY2NDNlpJY1FTcFFNRmhSM0pxZGJXeTJ6N2hxek1qUTZJQitlOUNNaFJFcHp3bGxEcUNKV2NDU084UXBHZmt5b0FBR0RLbVBkU1kwZUlQVzFTTEhmdU9Ub1VENmZnR3ArOVdzK1RzakZocjZ5OXRoYXd4aGdFVU9HNU5Jb1p6aEh6WERQQmlMUFJtQkIyRG94MkdpUU9tbmhGaGViQ0dlbWVhNTlQdVBBekxsd0tKU25GMUdKdUplYWNHcWVjYzBZSWhqbGl4bnNVcEE0aWFJT3hkY3c2SHpRU1Rnb1A3cSs0aVBNWUM0RlNUNXpuMGQrQ0Z3SUp4N0JGVm1PQndIbXFwTE5CZWF1Vk5WNDZZUjFoaWdWbGtKWGlMN2pJVnk2Y2U2VVJaWW9FN3BWVkdDRVNBcklCR2FDQVFDSUoyaEtqdURJUUxBR0pwUXVLKzZDVTFJYitCUmQxSGhXNXgwZ3BCd2dSSmlSV0dvUEF5RG5ERURFR002ZTlvWVFZYkRrM1NoTEpORVZVS2FhWkRpOXJxWml0cVR6dE9KM0hEeTJrMUlnQmRob1JGWmhVRXR1QW5KTmdwTVBVS21keEVBNFkwVllialF6QldHbG1HUWVLdFlxRmlOMlVOOGxOdXB2bWUwM1ArUk54a0ZKZ3lpVUlKV0p1Y3N4b3diQkFXSGxIdFlqbXhyMlZRV3F0R1JDaXRORlVjQ21KWms5MTE2MWZMNUlzcjMwdVRPYmV4RDRJMHRwZ0JBRnVLR0tFTUNhbzFCWkxFRlJqSmFrbHpLb0ExbnRKZ3dSdXRDQU1HWVdVNEk1L2RKZkgzVG9QSWliKzRaTE52SHllb1N6QklrWW5pa0VvRWhDVGpFaEZuRkZVQ1dxNUpadzVTemp5ekZHcnBaQW1TTW1Ga1VScEwrRXZOSDd1aVpoSnBLaGtERm5MSFJHVW95QU1ZVGc0RzJRUVBuQVdIR1BSTGFWbTJCUG1GUWNobVBLZW05L3pSTzRGVnhJQ1ZhQVZkeHBUaGJ6ajNsTGhFUXZFS0lZWWs0RWpSZzBtZ2lIakRFRldJYU1CS1AwOVR5VE1NQUU0eE1EbkVPZWVFSThrSVJSWnc3Q0d5Q2dvNTRBTGp5QkNLYzBEMDFJYmp6RUo3UGM4MFRwbEtRY0xnSUFTYWIwd0hsUE1rSlhLY09rbzVaWlQ3SlduUURrT2xuR05zRVBlQ2FJQytrMVBKTnBLZ294Z0FnaW9tRU1DQzVFQlljaFNrTlJ4NE1aeVRvd25saUFzTENkU0JXeGlTRWYyN3p5UklJbzBkVlFqckd6TVR3NGtrWnFDWkJDY0NFb0loTEZobUtLWURLUlNQaGlDRGFpZ2tKRWZyYmtPcTk4TS9zRkxCa0k2SDZnQjhKNGlCb0hLQ0drRHh3STd4RDMxTmhDa1FRWVZKS0dTa1NBdEVLdEUrTTNnanl4Z0lyMVZYbUlnamlISk5YV000V0NRQTZDYU00SXBnTUhXZVlwaUl0WmVTaDFDUUFKai9uc21CeHdzY3RJanJod1R5Q052RFZhT01XZW9sZGc3U3lsSDJGUExxZkJHQjhveDBwUVR6eUlHNUw5cGNzeHJKU1FEWkxIbVNHT1BFZE5CUzlCYUFIQWZwQUZEblBFR2U0U2xzY0VyTFFqbENNQXA4cHZCMzNqR3VHS1lCbWFjQ05vYnNNWUpKMUZBQnRQQUE5WXVBQThHWXFGZ3JTRmUyQkFDWjV4YTluY214NGhoaE9MZ21BQkpsT0JZQm9RVWdLTWd0ZlNlQ0kwam5GR0VFY0FhYUhBWWlCV2VBTkVtaHBxVit5VDJBemJZWUVhUlJkNWp6b2ppaEZBSVZsa0ZJbURLdGRWY0s2eTlJaVpZU3J5aHdpREJxTmNBNG9NcFg3LzBVYU5CSjVuejZ4ZTJieXpaQVBhTVk0bVZzMXBJN0ZVSUhoUGpjUXlnR0dsam5OSmdNUWxTRTJHQU1JbTV3Rkl4aVkzSlEvUjc4dWRSMHdnTjBtc0szQWFzVE9DQ2drVTZPT2xpcW1jUTRURDNTRHBwbUtEYUNhY0VRUXdyVDV5MW41RS9zMTJNbGFQY2hFQ0Y4Rm93SlRHQllFQUFnbUFpc0F6VUcwYzRjQ0dCY0k2SkV6aldjVVlLaWVSbjVNK01sZ1N1QWdsY01HcUUwazVncElLTS9tMGx3Y2dTSWlPYVVVUXFqaWtETExXMFhGdUNrQVVBOGhuNU0yc1ZJaXBiSys2SkNnb29FWkliUnJnT1dBc1hRZ2hFYTRaTlVGUWFqclJrd2xGbEVLR0F0UkwwOTlJak5Zd3lSaVdMdFo5UW9CSGpORERraVJVc1VNTlEwRlpIb1V2dVBWS0tNQTZTK0FEVVk2UGs3OFVxTU40d2dvMExDRGt2alhCWW9saUtTb0dvQ1ZZU29nV1ZKdm9QTTg0UnBEaDJGaXdUd2lEK203SEtHK1ZwQ0Jha2hpQ3NaMHhpd2JqM3hsc2JMQmVTQm8wWTFZSVlCVklMekpCWFZBdUZQQS8rTjlOanhJdGVJVzBZeGlaSUJFcG9EWXFDTnRHbWtEWmVNd2RJUk85QUZCc09qSENqdlBjYVJXLzhyVmlGSFpIVVl5Nk1zMFJ5NjdrR3JuQUU3d3FjQ1lGUUQ4RVJKRkVNeFpKajZVRlFveVJZUTVUN3UxZ0ZIQVhtR0lGWUhCc1pMTFpBa0NUS2tnRGFVSzk1VUI0Wjc1WHdBbkV3RVpXZlVLQ2sxbnlJS1lQTmF1WlBjTzgzekE0NEJZaEZNR0xPQnE1VlhBU3gxbENoVUxSQmdheDBCSE5ycVRLTUV5YTV4bEVZTkJERjBXK2lNaU9zeDhwYWlTTjVEeXpHWk15WllURTdvd2pXZVh5Q2pTQk9DR09aVVp3aGdRVmlPS2pmTXpzdG5YQmFPQ0tGZFVDWmp2YW1ndlNCRUFGVUc4SEJJUjBDY2NRYmpKMVI0QTFHQ0VrQXkvM3ZtVjF3U0R1aEpMSmVFdkRBakZMS1cyRnRRSklTWnFRUW5naUl2dVNzZ0NBWUVncGhad1ZERklmZk16c0IxbmhLc1Fzb2VBbzJwaklGRmpQdk5FUGNFS2s1SnNDOTRrcDUwTkpqNmd4SUs1VTBWT25DMThMK1pBaWY1REdyUEZhY2U4eHhoSytHQmFvTkE4YUl4RXBhUnpIUkdyVEdGRm1tVkJEU01hK2NCMkc5UjB4K1F2ektUdzBjenhzc1NBcEx0ZGFVQVRXS1NVWWpSTkZBQkZHS0tVZkI4U0FEbHNZaGNKUXF6Umlvd0ozd0R2UUhzeDZielBtSDM3UnFveHpGZ1Z1TmxNdDdZTjRZcnlRVk9NVHdKa0J4RkFqVnlqRWtPT1lZU0F3UVJqa2xQQ1hpOTZ5YVVvODlZTStKRFF3REVUUUVaWXhqR0R0c0VEY1dZMjBRQVBQUmRaMUdEbkZrcEdYV1dxbjk3MW0xUUlDNFloWnJTZzBTS29BSmpFbENOV1hhTWh5UXdvRWdDN0VHRklZSHg1Um1TZ1B5bkNqMG04RVVzQ01JZTZzbzV3UmJIYVNYV0NyTXFhVUcrNEM5SW93eW9aUTBRTFJTTkZqTUtlSmNhNEgrRWw2cWZ6MlgxbWxEOW1OM1cwVkZNcVFzMWNKcEp6eFdUbGptSEFKTXFYUFI2WmxVVkFMV2xtTXBMWkljVTZNWkk5NktHSzJQdWFGOTRqV1NXbXN3bHBvNEx6Z2xZTGl3eUhwTURUWmFZb2lKTllaUVF5a1JnbkNoTldHS2dIS0tXSG42SWU4c0taLzIxSC84V2JDN0pJM1YrWHFiQkFQYk0wQkRKQlA2WkNlS0VCM1R2blNDTzJVNGhKZ3dQV1pFQkdDTVdZUEFJY1NvRWx4YXlhVTJ1UEQxbVhaM2wyMlRoZi9Jd2dRTVdHc1p0RFpjT1c2d0RNeHBFVXUrbUxzMWd3Q0dCZU9GVlFhc2RoZ2JiVFRsU0R0dDhyVDJ0SkRYUWxKNUFLNEZEdHpqQ0lXa2t0aUExRXBhWVFMU0VBaTNTQW1LUGNlTWN1U3M5TlNRZ0ozT0M4bm5iZm16NG9wcTdBRlp6MmlNZTBIYVNNVlNRcHozQm5NT1FUT2pQQ09NTUtXVkFXU3NGY0phU2dQQkVYenRrL1cyL0c2dURBVWJDTGFHRTRncWs0NDZ6NVVGRXFsWVNTSklzZUNBZzBhRUk0TVlBWTVwelBWYUFublNaUzAxV2Viem5laHcrdk9zNnhrQWg4QWRkUWhiekxSVnpIaHZ1ZVZDR1VXcGt5UmdiNWxDQklPMkxJQlN4SGdVYStJQTBqM2JTeTlackZKZldpZHVtaWYxelp2UEx6REZPeHFzSjhJSVJnUVNXbkpDQVNsSFFDbm11Q0xCT1NRd1FZZ3dxYXhnc1g2aEtrZnhsRVBPYkxsWVBCMm5UMWY1VnRLTDZXdnZPTWVCT2VSQklLbTEwZFlKR1NobkRMc1Fxd0hHS01mY09VV3BKSW9GSzVUVDBpQnNhVzR0TXcvelM3L09mUHA2ek9mRmE2bVJERHR0Y2Q2SkVUU21OZkRndkE1Y0U2YTFZVUlUSFp4MVRrU2tnaTNCMUNnUk5DZDVJTjBrMWFmak44WHQxc0RzWFVhUW1ob25qVktZc2hEUkJaUGVRRUNjZTRkOGlEbkJRUXhCWUR4RlZIdUpPSk0rMElCeG9DQi94WUwvKzFtSWZ6K0xzMFFnckFnRWdJSm5Ea3RPa0FLT0E2Sk02NkNrQzlKSkJ0cVRHTE9sbHNvRnhDaFFaZ0c4TnNMOGlzVlpGbEFoS0FES0F2Y1VPOEFVa1BZQ0lZSkRrSTViSWFqR3pDSXNRK0JFZ3ZmT1VPeVk4QWc3aWUxYkZqZXZoNDdlYUZ4Wm9KNkpFT3RZa0NDSlJZNXpnVzBlNmkyaG1pdHZ1ZVRPYUVvVURvbzRMcFdQQVQ0UUkvNkNDLytQY0JIL0VTNW5xdGVCTWtSVTRDRkl4ZzBuV0ZNVFMydmtLR2ZJc0ZpMFV4V0kxOUpDQ0VxQnBOd2FSUU1FcHQxZmNEblRQZytLWWFtQkJTUXRvNVJKSVlCNHA0Z3g1clJ6aHBHMndMalNXbWxORURNWUUwNjhBUVQ0SFpldTN5U1A3enZOeEFTbW1mZktDQXljU1MyeHNESTRhUWtnYTRGQlRNOVdhMCs5RXBRN1RiVkVHQVhzZ3p0MVp6L2h3UC90SE1TL25jTjUxMFE3d3BSanlnY01TSEZqdE9PRXk2Q2t3QkN3WlJnenBqM3pTcU1JTER4ekNBZkFHRmxLOEs4NG5HbmFxY0NZZFlab0hieEN3Y1hxTWhoTHJEZGVHU093WVlnUnJKRXdGQnNrdlBIRU02Y0p3d3F6ZDJHOTkzUVFjUHUrZ2cySUdZWkJPVVMxTXhvaGJxMEtJa2lMUGNVeGJ5aUZzVFVtR09VMXdZNkJvZzRyaXh6UnA5M3VYM0RoL3hFdTRqL0NSZjVIdUp4cFAzQ0dkZDcvZGlLV3Nad3E0eW1Xa2d1bUZBTnZRWHZGS01XY0tNd1J0UlF4Rkl6Q1NncGgxWW5MVmJMM21kOXNWdXVsOVcrYiswNFRoYjEwQkN1UWhFaVBNQkRqakEzQXBhUXVRaFRLTkhOQ0M2UThqOWxHOG9BRHNzSXovaWw5L20rbUwvN045T1cvbWI3NlY5TnZMNTJ2ckpPOVgzZFAvNXNaODlhN0JRb0NJeTIwa2poR1BLR1paZFpwY01RNEZwR0o4OHg0WkFnMldtRkVzZGZCZXJBRU02eUEvUVVYL2gvaEl2NGpYT1IvaEl2NmwzSnhrZXd5UGQzemZPNU1DUXlLYVdSMXJMR3hrRmd4d0VCanNVNDRsZFJpakRYUmlrcmpRNGl2Z3hmYzU4ZURVSDV2TTFsdGpVMzlacGpmWXozZmlPUktJeUdjMXBSNDVCVXdhUVNqV25nZEFqQ2tKUU9NbGNIV0VwQ1NJVTBZOTlRSUl6bXhlZU11UDJOc0RlUm5qTThvTzJhWVZwZ0tMSjFnSk1JaDZyelRURmpoc2FMVWU2Q0NDVzZZOTk0WUExcEpMYlFWUEFRZFlYbCtLSzIzTmRzRXpxQ1MwTVFxanJoQ3h0SGdHU1phUzBBMjRpQnBnbmVPSUFUR01oeUVRd29iUkp3S1dBVWYwWHArZjlqc05tZUZIQUtpSmVGR0ltNHBGVlFaNHd3elRpdXNHUGFJQ29LbE5jUTZSSlVtMGhzakVETlNTK3M0NXZtVjRwbFAwK3NQaFRvRGpnUXpoaWpCdkJRY2VSYUljNXd6WlpnUmhobGpVSDVLVDBtcEE4S0kwQ0FwcGdTY1YrcFVVVDlmbVU0ZWZkNHdieXllR3p4L0ZzQWx4Vld5eVcvU25obU1sYzZEMElBcERrd1JqS1cyMmlHaHRkTlNDWTZaRFZRaDBKWnpIMGNvWVZoQWhHb2ZmTWo3MXk0cHAvbWRoZGZ1aUtNaVdBblNHTW1RQVdjdFZUVGlJL0NjV0t1YzBESUlCa3hUYVhsY3VpSmFLbXNwUWs2Rko2cWZuR3VMNGcvYUtocTg1anlnd0FsM05KQ0FITGVhT2NhaU9Sb3JNRE9lV01hTWpsazZjS3kxTUlhZktML0s1UVc3YTNBSUdjMlpJVmd3N1hDUVV1ZkZvclZZT1V5RDFwWWh4TGxqemdQMVJCRHFoS2ZjTTM3YVVuWEpSN1ZhSnJ6aGlEbUhTUFRnWUxod1FnckRpTERJdTFnSUJtcG9VTTVwSlFRbVFtbkpqWXM2RHNpYzZQWlg2ZEs0MVZ1dkFVRzFZa2hwUUNZNGFvM3dNbXBPT3VjOVFrWWFpRFVPTVl3b3JiRDNubEVPd1VpaGxRcGd6MG0vTnd2dkdYSW1XS1U5eFVvYnlvamhpb2NRWTBnQXA1RU5Pc1NreGIyeGpDT21LYmNZSTg1RHhOalAxdmg4ZFBmODhPWEh4Mjk3ejRKendPQVJONHg3UlVTK1J4aTkwbHNJekRIcmxGTU1HOCsxUlVLQXdEaEdJcThFMGxxand0ZlBXWnlsSzRNMXBrRm9yTEZramdpV2IvYzZJUWhERGxIaW5SWGdCTE5DSU9VaXp1YUlLRUNTTzJZdEQ3OWljWDdDUlRnckdiVVVRdERJTThhTTFUby9xVXFNNUR4UUpqVTNRaWhrTmZOSXNhQWN4Z3l3RlVRZzl5c1c1ekNVVU1PSVpKb3pIQ2xLS3hFbndERG14bXR0SlExS0tHU1VJa2lDWjBHSHdCakdpdXFJSE1tdldKeGxLWW1ZZEFwRngvQVNVZTJkNXdRSXcxd3g3cDBNRG1rd2hCa3J0ZVNTRXVNSlFaSkpBbHhhZ2d0ZkMzNEw3dnpnajJiVUJZYTFaZHJsRW5WUzR3REJHQ0t0NXBnRUxZVlZXaExFdEpGQUFTdEpuRmJTY08rZWNzaExJSHVMZGJod0lKa1VpaWlNQk9GRWdvbVZQV2NnRFVaSU13REtuWFhDRVM2d2NKeGlHWXRteG4zSWZmZ2Q4VGVuVkx3akNJZmdxVFJZRUNHOUJxd1lFOG81YkJGRE5HYXhRSU9QV1NRUUFDNUFHY1N3b01ib2o4VFByQVV4YklueW5tSnVpT0tDTXlhTm9kNTZnOEVhTDVURmpJWmdPRUxjRXlNZGpWaFFuUnIrNEQ4U2wyOTgyVHJGQ2RVbVVJWTBFb2dhekdrZ2lGbUhEY0V5ZUdlRTl0UUtRSjVyVHBsQ0lsQk9sTXZiUmUrSW4rOUl5R0NSSkNBWnM5eUJENWhRQjhJNUNaSmloTFh3V0Rvc3RNWFVNYkRZV2tha281cXd3Q3lHOThRdnZFbTNzN3paZVZZSWE4UzFReEtrbHBwTGd6VDFGdE5nSFJOZVJOdXcyaE5BQnBnMURrdWltR0E0WUVPazRnUS9pK2R2ZG5JRGRrNFRyV21nZ2pzWEhLWVFuR0FDWXM0aE5qaWNkNWFqUTJuSU8yMklZaU45ZmxEYy9KckorWmFYNURadzVVaVF4b0FsamhIQ0NTWktDaE5ZNE5JNGk4Qkp5WkVCU1EyVG5BbWlncElhSkdMaTEwek9jVEpRUkFTWUNIZVlDTlpTbzV3MjBoa3RBMGdFaUhMRGlhR01ZY0JJQWc5V1cyOE5keFlrd0srWm5GbVZjeVFvMEVnakRoNUZtT2VVOWNod1l3UTNCSXdFQ3k1b3lvQWdqQnlsM2xHTHNFS09zRURVcjVtbzg5UEhpSHBtaUVlWWFlb040Z0U0WU93Y09DNDVSVVJ6ckR3T0JqaldqbUlyZ1RCck1BaUhsVUJQVEhyUHQvTGVIVzMyVmtqdGdGRWNBd1BUMUFRTGdTQ3R1VGZTV2kxVmNBb0x6U1hoSG1ITURFRUVZUkVrRi9DUitIbS9nOFJzRkVPR041aGFKZzBtbktuQW1NTEVhQ21vbEpKU0Vvd1BubHB3QUZvN2pCSDJoaWhuUGhJL2IzTklDakpRZzRFUml5blNWSE1FUnVnWWdLWEVTQmxHT0RFNFlNSEFlaHlBQ1JZMENLTUV6ODhEdlNOK1h2ZGlpU0FZWnd3SFJ5bkJUQmlDaWFNYUd4MHp2U0VFSVdxUVJ0Wnp6QnpuUWtzbktRL0N5OEErRWo5dmFWRkVEYWVhVVJ5OENwUkF6RkVNUmZUdk9YTk9hRUtZMVlwcWFaeWtWRmtTUExGV0NHODBOVzh1TkJkWHlidENJcUJncE5aU0M2STF4eVo0RWhTM25zU2Nnd1FLSElCSmEyS0t4SVJKNlluajJGckREQW1VaGdoYm5Obk03TktzODk4N092dndFcXQ5Y0F4WmpDaVhsQXRtT0JWQ1VjNng1MUlUVFFrQXhjZzc2YXlPbUZaUm9yM1VVaEVGTGo4Wi9YUWY5blNuZW4zdVUwcExyNmdES1p5andqSWl2QU1UVEdDT2dnUXZNWk9PWWNvRUVwZ2FUMlB4UXJtUFJRSEtVZGZyaGRjZmZ6Ny9wdU9IRTlJc09HdWRFc0ZxNXppeWdYSktHQkN2Z3BBQ3VWZ0dNYVNwQXk0b0Jrd0k1bEloUklsRlJqTi9ZcFFteno5VFpOYlQ1WG1hdHdwekxZbXpZQzFpbmdsQ25MRWNDRGJlb1lCNXNKZzd3MDNRbU1ZSVFvUVh5RHFzTVNJb1Ira25rdm05cmY3S21UZGczVE5QVE1pM3A0bU9sU3l6SG9TM1ZucE5DYlVPTzZ3WkJzS1U4NXhUS2lBdmdnUDF3WkM4YU1tUGNaK2ZTcWVNQTZkZVJMZGlrbGdHRExuQXRiZUJTd3JJV2crRU9DV0QxVWdUSzNEUTFFUEl3VmFNQlFlL0RzVjgwdVhGcXBjNEQrWjhZOTA3cGh5M0RFbWlxQkdVTUM2eDB4b0ZDeng0cFlDUlFHS2NCcUtwc0E1SWpHWUFRSjFrNWlUeDErdkYwVGJQUDc2VXZBQkthK0RJV2djTUMwUWhVTzBaUVV4NUlWejBiU2tWd3haQm9KNEhqeGgyM01xZ0dIY3VQMkw1OW1ieHlZek9zZ3R6M2xsbnNNQlVCUmFjTmtRam9qelJWSG1qS0kwRldWQld4M0RrSUdCd25pS0lPQkt3eTQwMHY2UDg0OCtuLzc3VVlCQTB0aVJvU3ExeUlKSDBUc2VvQUV4ckZPdE5RU0UvZk9hOUp0NGdLNmdIZ1pnaUVWamtKZkR6OWZIVzYrM3hwd3RmSHc4N1VDM0FHQUFsaUJPeHFEZjVRU1JIYlFDS1FVSXdLb2dRWXNHbURJNk9oN1F6bkVnVEVXdzBJNy8zMmZhVGN4UUNNWVNpVVNxbW1MTUlnVGRTMFNDTUlwSWdiN1hYTVoxNGFXUkFCQk9QclNUS0dCYWtCeUVMbjYza2s4dUlubXB1WW9vVWdtakNsTkdPTUMrVmRweEtaRWpnV0FqQ1ZYQUk0Wk5sVWE4VWRzaEUrRlQ0V2tpaWg1M2ZFLy9JaFRrclBRYUVzUVd1T1NQU1VNY3hVOHBwN1RFQ0dyakFYaEt1bmNZTWd2S0lNT0lrTUlJTXltMDN2K2paeUxaKyt2cWpjL216bTNVQ3VaWmVkemNGTmRScUFab0dJOEE0ckJVSW4xOTNrUXhEUkhUYWN1S0o1RkpTWlhSd1RnZGx3RW9rWTN5ZHJrMHdtU2xPOHh1cHI0UzlCR0RhYTJtSTU5UmlMQTJOcWpVZVVRY2duSmJXTWVCZVNRc0NNTE5HY0J4TXRJVThLQzJNU3piTDdGM1drVXh3cG9VQmlNV0FqeDRScUxMYUlCY2NOYUN4Vk1SUllhVDJtQUdWVWpuaEJHaE1BYnZUQ2YzWi8wM2VtemZYZGVSNG9sK0Z3WGwvekVTM3JBUVN1VUFSRXhQVVlwV3FUSlVzeSt1NFh3UVNpM1F0a3BmRlJVdlovdTR2OGx3dWx4UmRYWDVUM1IwOVhSRmw4WjU3THZLY1RDVHk5ME1DU0Q4NFdIKzdQamxZbHAzdFQxZEdyeVlSOWF4TW1rc3VPVHdsaWlVeGd5dUhjNkI1emJuTkFZN2NZUnB2RkN0UlN4cDlLMzMzK1NhRDg0cUx6MVVhdHQ2bnNsREQycmduR1RHbm5vdFNSQzlzWkFpQUFoM0F2WmNsbnc4bGFaa0w2S2hTVUsrSjVSUzhqVnVZamV0a2s3WDFZZ0F0aVhUaWxuSXhBdTl0TXVRb2lWQ0ljc3RvQzY5MExqbFRYampVeWZscTJ5R1hxMEV6OWc0dHorY3R6c25ZSnEwZWdrVmJiOVFSTlVhTENoZ0lPcnBRTGdncDhwSnR0Ukg1MVptYytVVmMxSlo0TThGVURRb01RVkp0VEZ5V29NSmdhNzA0TmsxVkhHMDJncDBOdFEvUGtvTjYwdC8yZVVybEZEMEFxSVAxNm93ajFZS05Vc1ZzWXlqcjRONEhGODZsYUoyOWJNWEhLTFZKWDJLVUZwL25wOU9WVTRiZVM1UnBjNlJiNzAwb1VrMkQ1dklqam5NbGJJaVZXQ05CQjR6b0N0ekNiSlA2ZVh5eVBsdVA4N2pENGlpT2tpVFRraGRZTGFOUGFLNUFjeW9tQVI1UU80R01yc2hHby9WTzAzQnFDb2tsUm5SeFkzMHVxNFAxRFpkVEhscHlHUm10VWcrR1RrNmpxS1FlcmFLVUJEaFFVK3VwU21vTXd3ZlhraGRYM1ZDUzI1S2ZYZml4dDJKOFdMd3YzdWdVa3hsYUttUFNJeDQ5bFU0YjBxdXRpSlFpUGFrckxYa1dIVEJWd2lXVGVIVjZ0bHBmVk15ODdjVWVrRVpBSWNPYWF1K2NjOVM1K2lsUkM0VXh6VUEwS3JXV2lsNll6Yk1pcUhyTnRFUit2RjNKd1dxYjkvcEl5U2tOTisrUVdkcGMzZ0VhRlJhRUtFYVZQVTBqRzlBbmt5aVl3eGxCc2VXMmdacGlXNkhUVzg5cmszWkdrYXhDWEd2TE5LZE1qVndqZzNTTzRlRUZUQnJWTkpodFFoTEtpU0ZqZzJVYjgxTDZwM29paFJsVUFTSUtqTlpyVjlSbVRxd3FPbktWTWljVVl2R0kzTXBjWElkUVFlZmN4eElYZlJuTTlnMThBUHl3N1MxaEp5R0xTYVdBbStmUkRLYkZiaFpxbzA3MDQ1Yk1tb2dRaCtXSnNucnBDWXpITW5XMlplY1BXK3duSXdIREV0Q2RTVEpYZ0I3WVM2bm1CVm9ZT2tBNDV4SGRVcGVSdWVac1BSV1ZVVjF2eWE0ZmNBc1VJREZqaFFCSURTaHpLNW5ENmh3QTRkckh5RkExRFhXenJzb3dhV0xOWW9WdzlJSlR3MWNINjdOUE9pU0k1MHBJbEtGTll3V2pBWXE3VDR1U2ZaQ3JnMWZFT25wMXJNSUZxQzUyeG9ZdGtZTlhnbS8wQnBaQk5RS0plNFFWckpneG5EVGhWRnlmMytWbTNVWk5TYWRtZDQzQnJybTIwbkZKbTdrU2ZLTXJZbWkzQklveE9wWXUxTFYyQkZjdE5ySUExTWtJaVRRbnB1STJtbFZTMlJEL1FMdWM3Ty93azg2QVhyamphSzBNNDRJNVJSNENrYTJYN213RDgwUVljK0hrU0VJSnRWc3VvU25IcE1ydHB1Z2IzZEZ5YTU0S05Xb3V0VFppcmRCN3pibjJWaGl4UjdJSzFTVmpOdFpocVFXMFVTWWpiMXB2aXI3UklWWm9hRFZGVHhCandac08xS0ltSitwekZnS3J0eGhSb0V0aktJWHJBRTh0VVI1cFdkM2Z1aC9MSkdVTGh0aitkSjJibkdyWGxMT0psZHFTZGUwbHlRVG5tQ29NeU13Qmc0Zmo0Skt3QnVVV0xrVVpjK2EydEhJKy9QSFJSWEdPRTdlakxRc3JlY3habkxTbkVJazhFYlJpY1FTUkNHVlBWSnNudDBMSmFlS1c3bVJUYTFvZUtuaFJCZVRnM2JkeXBtOXVZTkRXVEd2cGlHVklNa3dNRTZaUmRDdkNNQW13dVdZc2JWSXJ5NDBCTkd0RkdWNVNtNUpQejA1ZnJPMzBEK3ZUczlPOTQrTUpyaytlSGEzT3Jnb05iNm1ucENHV0l0V1dXckphQmNCWmw0UUhhcjBqTVVXR2lGRmFLeEJlV3lraXVtUXgxMTUvbzdWUHlpZ0FPU0ZMSTFGcXk5cE1GRlpTYWFOQjk2SlVxWldjbkJBeldlTnA5cmt0U2ROWklsMk94OFZLOVBQdTZ1NzNhVEVOWStUaXdFaHQyck5jQzgrRmlXSTRRL1F5M3dhUnFhTzNLQmhCTWhvMFV4MlhXN2RMTXpmRFFyR01NQktJN3VRY2tiZzZOdW8wZVhZV2Q4dkV2V21YaVNKcENhdHNKclZIQnh2OXB1QnRSNmt5OTJuYmUzWlhRaTZlS3FaU0NjVlQ2ajMzOEFTa1ZzQTFyRUtubkptaVViU2U1S2JnTGZOZzZPNXp0RENRQWFZSk5KQmFxS1UyRExnbW9JaGFSMWdiM05FN3Q5RVVCemh6S3ZtbTRHMi9XUVlCRzJoTUNMVkxFeCtEemFQbEN0UHFJL1djVzdiYVBkc0F6RHhaMUFEUmJMSFFpeTNCMjltZTRSV3lVSE10bkxVVlY4eTVHdWJFM21Sd29hWGFkMDFVTWhseVNQUHdJVVZhNlJ1djBNSHE2SFRabC94NTEwNkd2WFM1V1pCRXZVUFhvYjNPQWJlbXRSdEVpaERMeWs1QnBWZ2RVVlVDSnlMMVhwbzBSc2JxQmVmMHVtaGlMMklxNGNlN05tOGhtcGtPUWdmRXdtaDFlTXhXZTgybDVsTENrU3NNTTZjeXN1V0NJaW1TUk1YRUM1NjVhT1ZHL2oxalpqS1pRTUNvMTJrMUhTZjVRc3hEbVp2QkdCV3RqYWpldW9OUjl3U1Z5Q25uNU5kaUg1OE0rMVpXMjZRUnRSQ1NVQVNMSU5ZRWtBdEl0Z1NTWVhqdHJMbTVwU0ZEZ1NNY2VodGNLcWJrbUs1bHYxaXZEMDQvM1hqR29aN0VsRGtrNXg3QzFiaG1yWnQ4ZXBXVU1BRVZVRzNKc3djRlMrR1d6WWo2ME9zR3JqeXVlNWQxamJaZW8yZ2ZMVXQwQkNvVHBSWk9GQWhKMVloaXJ0WVRLYkc1TXJNVFFtUk1ZaFFnQnUyT1ZwNXMvQlBiM0NBc0I1V0dWTVFwUisxRDJWVnNSUGpJaEphZ2MwMDhCN2d3b3ptbTdocVVQUTJRclVadWJVZFhaUm5PR2FhdUFia2JZc0xaeWRVcFY4Um92U2FYeVJSdHlMTFpwY01Gc25TcVM5ejI4ZXBFL1B6MDB4MzZMZzZTdzFJUlM0eGh5MjU1RjRpbGVCTlV4RDZLMTk0bjl3RmduK2F6WjVReGdHV2FzTk5qa1cxblloZVhLaXcwUVRtaHBNbGdlRXJQRTZGekRzc3B4SVl4R3JWNXBVSUxCb2d4MHBLNHNKUVZmQ0ZuYjdiQ2dDODhBemRjeHYrQXpJSzdtN3AyL2lEbE9ZT2NSek1tY3dXZlN1cVZVWmxhRFJwNXdFU3VqcHR5TGFLMUZnZEx4THA1bWRkZlhSUStmUER6N3J0YnhaQW1DQmFwcFhhSUFwYXN0ZEpTUkVvRkZhZEpkUnpRS0ZLR05LVDJ3cFZLcnNLVCs2QnNXbmk3VkkvYS9Ic2QxSkVKcEhyS2VWTEpBWk5QTVFWU1UxV1RFTVhDRlN0UVYvR1NJTGZpZzBCU1NPa0xxSm9VNStCZzNQU1czQ2hua29NVFRNcGZOYlhxTGpLc2xMRWsyb2h5ejlsRnBxWFF1ZkJsUzZtbElZbFR6a3ZNOStteHk5c2JYVjdBT2FYV3BEZXU1T0hFMk1pVGxORXNZd3JpMUJQSFVyVnBNdVVrVFZnbS9hYSs4WU5lVjZ2ODAzV3B5d2MvNy9vNHZvUFZRK0dhb1NmcHhRZUtCZ2w0SXUvV3VQbnNqVWJBUFVmaXdhTjJhZ2xybjN4KzFJWjJpUS91OXFHWURQRytqTEdqZStvdEZXRGh1ZXIxa1RGN2pkSmFseUdLalhuaVJLd3BnMnNoTDVkNy9nZCs5dVRkU3M5VzY2TlhiMDc4OU0zNndPN3d2QkpicldSTW1mS29TOVdQSmZXL2dDYUt0dFRBSVcvZ1VuSnB0UWt1dHFTUU1PZmsvYUsrekIyZWowZzlIRlVoRlZVQzQ2ck5ZNXEzYXU2ZFJnZ2tocEZqZEMrVk5FWG4yV0kwNEVvM1IrWEZoV2Y2OXBXcmVWMWFHMjFRZHJlU2ZFNW9ETWtGb3lWQkZFV2hWRzB3THJsaEdhTXB6MFV5SWhueHNrTno1R2Z2MXlkdm44cVp2NWNGSHRyUjZhR2MvdVZHVHA3UVZIKzJVWGhxRVZia3BtaFp1Z1pweTVZYlVLRmNhMWdkU2IxaXRlQXhPYXR1Q3N5ZWJYc3BhYzRFU2pDb1FCN1ZRVkFMS29mbnhNVmJMczZEd0FhUnd5VFZxc0tDMGJCNGpLM252bDJWYjNHa3JjL1BicGsvVlM2dGV6RllhcTVFaVhuSmk0K09tQUVZak13bERKc1hHRzRJR0d3eUlkUXlLSE80djVnMjhMZFlEUzNKeDEwTVJBZ1p0RS93Qm00d3B4dTNUcjF0VXVDczlJWmNJb1M1cERUQ29uRGRDcXI4WXIwKzNzNFY2bHlrQVUvTnlTVzF3WXhTdUV3Y1hwdmo0Z29Gc05TOStxQ29FOS82a28wTFRjYmwwMjlGVncwNWZiTWFCMzVIcUYrS1lnMmlVQnNWY2k0SkhWdHFoYnBySFhQV0pCUWh3Z1Jjc1VnQVlScWo5SXBZbXk2aGMzSzgrbVRIZmhzc2xSd0JZZG5tWE1xdWpxTURScXFwdHpEdG1wT1FsbEVuNW00QVJiSFU2RFM4cUtWTkM2ZC9xNFVncERUQVVpdEpJVGVQeXFESzBFcHhUSXh0S2hJUVEyQkVLSlpCS1lrd0RodlJyczg0MmJzcU9ud3o2NmtoUVNoMktpSFdSWHBQVTdVU2E0ZmlVbEtmeHBnTGVlOVVqQjB6ZFduV2tSa3VjcEkvYVdBNzlhWDJVdERBbVVRNk5ndWRLSFgwTHJYMFZLQ0pEU3hacGZYY1VvczBEWUZSaEZiZTVJN2YwY0NOSERkaGE3WFdWR29lbklZMTVSNDllTTRSbmVNUXVUYk9XQk0zQ2M3TnU4QWc0WXhHNCs0R3RsMWt6WWpuTUE3QjZzbFR5VGhTemxiNlVKQ0JKTmw2WXpZVEhaR2xGUmdGUU53WldmUGREZlIvYUFNdUp3Y2YvN3pleWxnZDBQTGc2cVBQRiszcVFxbmxqQmdnRlRoWm1sM2VHdlRla3cxZjNKS2V5Umk1Y2g3TDdvKytXUjM1MzFEUFJ0WklMZGZCd2hBRGFqVW9HS01RdEp5MVJsTEFBdGlHSnJlMmxKbEtyZXFna21BczhRZnJZejk2ZDd4c2tMbWNmanc1bGYzVjYxdVlOUy9WQjdJVEZpZk1YUnBHZUlFa05TeHNCRnAzQldUS1dRaUR0WmJTSkpXcUF4cGNlRUEzelZ6eDE1NE1CdVlXWTZLcllvVTE4WUN1aGw2Z1l4azFONTN2MDRPVFdHclpSNlhXaUpvdlFWYnJkOGRIazN3YzNSakwwV2laNHJWYU12UEdrYmdGZ25VeFVrVUZIREJYWVNNZzllTFp4Qll2ZjFucTFCMGZpbTZuWGllcnJkZFFBQ1VaMnRvMHlzd2pFQWttRHRMV2M4ZGFnaVFuSW92UUhJQmpMdFZXOEtLVGx5NTljVjJ4ZkRuZDZ2TFQ1b1NwbDVmMXViYzg4bFcxallxZVIwS1VqdUhjTFlFeGp1Z1ZJNWM1cHVTVHhUR1ZoRmc2K1lTdjNQMW1nZnBQdVVncUFCMDVDVEpZQm0xajh2d3lxV1hyMEJaRnNoSVZsOTJ1MWxXOUNEU3dtcWJaa3UxWGUzV3llcmNzK2tmTDhVc0hCN2RnOTREUkVvWkJETGZzaGxRYXA4cXpQeVBucG9rcU54dURHamFQWEFzWUNxZFJlZHAwdlRQZDNOd2dxbEtKQmxpNjFaUUV2QVgwb29NaDZ1eVlTYU42MVJ5OStjaExUQ3hMNGpBdml3TndJcTlQWWo1d0JBSXBRWmRVQ0N3UDNCU3RRZTV0V0VpcjNxVzNZTTYxa2t1SE9kekp0UmlQM0M4TDVHNTFRT015Mll0Nm5yeW1Ob1BlUXFNSmVTckp2RE5vMWhLSlZWcHQxTEtSdE5MN21PQjlZVGFib3V0VGRlWWZ0emFjY2FnVkZjK1FhazNLZlZLd0hrMENVblN0MVNIUGhRQlFjL2hvdFVGcnJHSlpsOEphbDBYZHYvb2tacjkzQzBuSkIrQmtxREpLaHdhWTFZeWw1U0tJU29rczhSaUZrM2prT1E2V3FKUU5QemhlMjdWMi8zeno0NVZUS0VuUFEwTUg4WHpoS2xTcGRxdWphaTdRVzJvcEV5U2R5TDQwTFRoWHdGeEFnV3Rzam9BNHZqSEJwcWsvTzd4dE5VR1RBNkZZTHlPbExqWG4wWHNHYjNrNGtrVnR5V1FTb1pZVjVtU0xLc1VpZDRYRWRRN3RJdmowcGF1dmJuUlZETThsT3FKcUpDZHFsdFRTTUFicENlZjgwZUVUdDVGcDBZUWxhZVdzTVNrWWpwR3Znd20yVEJxUUZ2RE9aTGs2alRLcHZkY2FiUzVXSVZteFVpckl4TVlrTEtPN1FFQ3JOQm9zY2RjWE1oOWZScGZkeWJ4ckFVRHZpVXFkK3BrTFNDK1N2QkNvbHRyQ3FEa3RZV1VqTk04aHltT0FWUTFucDM3elFJYXRzZ291d1JnZUUvTnBxeGxCTkNjZFZGdlNpbFFybDBLMkZFcGNWckk2T0tDbjFDcHkza3drZlh0NmMzcnFCRTY1YTk1Z0dCYlhNS2lxUWRCN3RhVGFreFR0NnRWQkt3OHFuZWZOVWt6MXBxNWNjTWk5aS9NaUp2anZwOWUyK3VyNmRWMFVvckRheVVaeEtwSlNwVkl3ZVowQUxyeDBBRzJtVU9zZ0tKYUhLRWNialFtUTIwMnovTkxmK2NtcDM5cmQ3YTNrYklRNDdVMkxrUjBwei8vV25ndmtwc3B6aGZOUjVyeklwVlptNnBpSFRJNVQ3T1lMdmpnL2ZmUDZtcGNkYjMrODhsNk1WcG04OFRUNjJqb3lkSzJTdENsaWNGSVZsVDRJYWlLS3BZUkF5aWFwenY5WHpwdjY4a3Z5MmNkajBiZVhGZEN2c29RTTZvMTRXSFZpeWlVWFM4aVlSMUdVb0lFMFlHUVlNZ2t0TlZNV1JWRG9ZQ2xLYjhOekhuVXN5UFJrcFdjSE53QjFFbTU1V1BGQ0hRMFdGLzFjMlF0Mm1TdGxIWGx5Mk42NUxLVlJ3N0dVbmcxYUlOYmwrTXBMcVdVN3hpRTE0RDRNbmJEMlVwdGt6VklWSWhkdm5qMVJobVl5WWEwMzFKRjZHRTVTbXlvdFZkZ3ZwVzV2SFVaQXlaNTAwbmVFbnJFM0xWQmdHdFF1amJGVmpyRFMySmM5YzJYcEJhclFTRng0dXdmYXRvdElSc3BjekhyU1lsbkxBRlVRUnEwSUJLVTFtVWhPa1FMUVUrTEpPWEpBUklOaHZpVjFPelI2V0hWaEErd1pEQ2JDeitTVDU2VGNCd2lycGVZVmUyL1pwQTBJRGJiYW5ZUUhMSkhrMWgrZG54eDBoTzF3R3U0RVVJaEdwVkRFdXVRd0kvcFFqMEhKZWxNczBXWGEweFpqNG5LUUxDUUorbEpvekU2R2JXKzNxR2NwU1J0cTFzR2VyYlJoeFVZcG1pdDJuelNMSnk3MjNyQ20xS0Y3UzZ6QUNpbDIvM24zcDc5c3h4Qmx4V2JpUFRJZ0RhdWw1cUtXRzAvbTZhdzlPM2RNelNoaGtjUTRmRmhyWFpxSXdyak1aaEE3aEFrWHR3WS9XV051NnMwc0lrZVpJQSt4R0lCSXBwSVRsSzUxU05SU1pJQnBpdXhPbnFrSFhzVTlMNElMYk8rUkRUTE1VSXZpWExkcjV4SXdEWHFQZ1lXMDEyeDllS1BrV25OSTBSbzEwMGpWQmxyemJjR1Z0L3ltcVhCTlJYa1VjOUFzYU5ZeFF2TGd3RFF3cTh3T0lXeTVVVVNoT2krazNoTmN1QjZ2NUxidDhBcHAxQWNWbjJ5cFV1STh5TUJFamF3V1pVaWtnNk5iSHBNRHBKRWg1UWhtc0E0ZGJ6eHYzOXJpbnJoQUhCSjc1ZXhCMmt1a1FKTThwR0ZISXFnNFVMMEthV3VRS2hDN0Z5em8zQlF1NUc0TXpQYkk1Y2dqMTRSY3RGYWN3S2pXYk5oelFGbXNKQ2NweHIyVnlkMDFwQlFRODU1ZHRiTDFiY0UzUmk0RlY5U0V1V3JybkVzVkNpOW9NbGN4R3Q2bWVlOGhJMVBPM2t2Ukxvd2VXS1pCYTNWYjhQYklLUXpPUzdxaURBTlhZV2RaU3RPT3ppbFFXNS9QUzVyR0dGUXFqVVE1UkljWDFZNjZMWGQ3NUhJcW9vb0NPSnlMOVRHMFM2VFFvZEpka3FBVU1jdG9uaE9Hby9Sb0RObHRVMFIwVys3MnlFVXlkWi96c1VCTzZ1REduSWxLZU5pVVlEMUhobXlaWktSSW82bjJXcmd4c0RIa2F3L3VyWkhqUnBDWGxFZUU1SmF3NWtnNEYxQm1TSzJMOVRweFpjM2FQWlc4UENXQURQS09WdHUyNEJzamx3a0NzVmNid0RWbGNVTWhrc2pRaG5oajZBVXlVRzFOSzdFbmpSYVplWmdhenZmWUZydzljcjBvNDJnWk9DVWF3R2g5cEVxcE5jSFVCelh0aFpOaUt0VW5TclJJaGFXTG9BZG5qRzI1MnlQWGdMblVHaVVxcUdRZmVhS01Qa3EzR0NvRWpsN1lWSWVOVmdPTHBsWW5iNk5VTGVXK0xYZDc1RVlmMHNRSzljU1VLWHJ0RURGcG5Hdkl3R0RNeGtPeFlqVk1YUTJTZCs3UVdpOU1kdk5ZeTZNVllOcU84UXBweWpWMWFsNEYwM0JTcWN5YW94UmpwNGJTVWpPYzFsMWhycjRjNE9JNVJKYm80N1AxNGNHK243ejJ0TDBJeFZoS1M5ZGFheEJwSDBZcDljR1ZCdlplR3ZwZ3JSQlpKbE5JclZUeWtrb1JqVjVwaVZJNXVTamNkbTZyczJzWGNzaUJycmVUaWV2b1JTWnRJa1RxMFViSHBxTGFWSDN5ekpFbjNRYlIzdktFUXl4emxsYUU2dGJuUEZ3a25xN00zNjYyTTlZMEJRVmpRbmRtQ0RacU5pRURlR2hMSTlkaExTOVZYU2JPRmhhaENjRTdzN2F1eHBNSG55Lys0cHVVTEFGaHdWcnI2Q3lwMUtrakhaUExRTEt4R0tVQk9sQzZncWFCeExsb20xTUtjNHRZWVBibGlYRGJPL1EvMzNuMW1pblBjUVVjYUk0K0pIdnExcWphN0NEUXFqZzBTRWFZa0J0NUg0RTBtdGpFZXJnSnZya1EvNDBjckd5SkFQOGtHSVkwbVRXYTNHYWdpazdjV1NNaGNrTExXR3lwVXBleGFndHJtanl6QkFIYVlPTVlpeS8vNmpDOG15NXhmL1hKOWF1Um9yblNJWHV0NUxuVlFaVk5ySGtDS2hRbHRUNWlZaE1xdVdUeElwUkhWQjh0NVlJdXU1ODJ1cHl1Y1YxRGZYUlFyd0RPNXFQblFaNjE4VUFnazhuMURYaGtIeWpRVFdIa0hsWnJSTS9KYzYxM3lkOGNSM0JObjN2bUdHcGVwL2E3YWVrZ0padE1EZU1SR3RXY2VtM2VoM0cyMHRuSmFvWVdxZC81Qmt1SitHdkNPSEtDT2I4bmtxZ1pHRmc4dUpVbFdLVDFOb2xPejRsS3NhSUtnR2wwRTBocFVzcHloL3l0dXQxWGVEYWdSYmVXQTRhcWFZUGxRSjlwbyt1a2JWQ3JXZEV3NFlrYmFkbkgxaHljVzBtNnVLMXZ0M0pWeWZjNnNCMkJVYzBHSnFMS1VqQlZNeTRPMnJCRlVaYmtIcDJNR281cUhYSWtFdXM5R1M4STVIWWJsMlZWdDRvcU55RnNPaVJJZEM2T1ZaM1ZMSGxPSlhSZ2I0MHBMVEcyWHB3V2ozTVpyUk1ZTFZ2TzU4ZUhma0Y3VHcvWGIzMS9kYlMxcVYwOVBCa09vclFVL1k4SitjU2gxS3d3MGhCV3JjNERwOFV2YXIwTndER0phNFBnaTlnME9kdDJDV1FSUUMrZXN6YXB2UEJqVmdyWmFHcXZGYXRZOTlhS1NxNmpDNEVDWTZtNXFkQmNMYStlK2JycU4weWJYRHZiVWlQTHZhWHNWYnYxaWI1eTdwalphQVM2SzZxT1ZycFBIbFRkRTFNc0dWWGpmSHMzMzBzUlNMMjRwR2tQaUtrSjl0SktNQUpwV2dnRFNXN3V4U0o4T1JqTEJRU1NvaS8yNGZ4MGM0ejg0bDdYay9WN2UzaDV0TlV0dnE4QmFFdmVrWW1renRGR0ZZNUtiUkkxWU1WSjU2U05BY201SUpaQ2tsdzZ1RXZOc1J3SCtlRkdYY0EwNW5vMWx4aEpsYkJyYU01Q1F4Q21Ma0FkWTVLWVpLMEw5VjRMcEtVV3V6QXNaZHZNUDJ3ZGdYL0Q3VnJLbkNWbHlmQ08xdGxsOXFjTmd4cGpDTVRBTEo2eHBFdzlCMkt5bnF3YjZLaWw4UjNDWDk1TWtJc0VQT3BjZFRNMEdLVVhLN0tRUkd3VVJ0YktoTi9RaXFuMnlDbzYzOGFtNmU3QWwreG9jNmJsVXorNjdUaG1vR2hGd2FDNWpHeDFURk5iU2tTZFBKdDhsRUx6MmFsMzFjNmpaaEFtbzU3cTBHVjc1dFFQNHF2VjZ5TzN1K1NMc3pzRGxwU0tEdWcyVUtFNUZlcWxzeEZsbHRaYWFwTjBZTzRqK2NqRjgxeEd2Y1MyOHZ4MUs3WHlScHA5elowbWM4OGNnSW1tNWcrQWt0T29HaUN1bEZRNmNtMnRFWGRESk1ld2FjaG9jZGRjSG92NlltM1hlMk0zanFxNzg2d3ZXS3FxY3FRU1JJMWJTRnNPQWlwU1BBY1h6VlJTU3hvVDA2VnNOb1NoMTlUVGdDcHRjYnJyK3ZEd1Zqd1g1cHJOUzVSV3lDMkVhaG1rWEVBTmNrZHBxREtpY1VNeEhPcVlJcGk2V0s2OVZ1TEZMTnh5NDllR3ZXQkRCaU9vTFVtV29aSTROOUJrd3JsbkhNTlZVN0haZHpYSlFHaXBxTldndmtTOHZsdWRuSjNMd2VxdlY1bGtteVMycGVqcXc5WDZhTHNHVUU5UWtzRklFNWVHTHh0eWF0MEtKRXlhRzBEbDJmQVF5cHBvZUc4aElKUVNwNXFYWTNPMnBIKytWam5ZenJhVVhMUEd5Q0FKb25ZYVdpQlJZaTJTdldFdDJCRUF1R1NnTWZ1UjI2TFBrOXRtdUNuOGozSjR1SjJmVVdSSUxwd0Znd2hja0lKTXZkU1dxb2RTOXV4YXBNb1lZdFpLbHRSSVZEVlJic3VrWG9SL1BjNlB6czcvcmZwbEkvM2ZxRjgyd3YveC9YS3dHcS9QL2ZRc3RyT0RRQ2J1YTJHWlNtZ3pSUVVheTM0cGRLOEQyMXdmUnloWEM2OWFLeGtNeCtxUzYrTDZtb3E1ZDd5OVZpY1lySXg5MGtMa1dJNXhhOUVjaGhaaXJ5NE5XelpPT1BMaXlPeEtscGRRZndDT3krckxkMDM2bWh1YmFYUDNXbVZnaGVvRmdyMjdxNWRjRkRRajVqR0NjaTVWYzFlaGFpWlZNK21GNkUyYzA2M0tRaktLU002WTUzSXlFSEpNaGtSMWRCUmNzaW93RDdkUmRQTEwxSVlZNXdGMW9zR0J5N2svMTdKdmg2R0lLRkROV0tva1d3cG51VU1PajJpcUU3WEtKc2E1cGRKYTBtckJ1ZVRVT1ptN0xib3hoWCtTMDQ1VE94M0NZYmpJNUZoUm13NENZcXNaTXpPVldxcW16T1NabG5PL29CdHpxejBQdkh6b0wrVDg2R2JxUVZiakN1cHRHcmNPV25LSzRwMGdXYWt5V3FTV2MvVkdnWU9sMWFKRENNc1lUWjFzeWZxWWd1K29EZFhIWEE4QUtTVXZ4V3Z6MU1keVVsbk5PZXFvSXlKanFoakZ6SXZYdnB4aGszc1V4S1hZK3J2RDFlMlFxTjdZVFRJcUZWTG9LY0hpUTVHY0pDWVZtTEFqbkloU25pQVV1UXM3TVFBMHlvQzQrK3ZXdnNFMHJvLzJkaC9zTGtlZDI4bW0ySno1dTN1WGQzeDJWWERnczlWNmR6a3ExUC9XTGZkUFA1N2V2N3B3YjcwNUJYNnRiLzFFNC9YdWcxMS92Mzc5N05FZjM5aDNMOWY2OFZsOTlvZlRQejE3dERldnZmM2h1Ky9QOVBDYkkvbnVlZEtqdCtjL1BQM21KOEUzNyt5NzV3ZGZIQjY4ZS9iVCt2WG05L1ArdmRYMzMzMlQ1Tkd6T24rN240N2YvL0RFdnQxLyt1eWpQZjJ3a3NQKy90dHY3UG56YjQ3UHZ2bnU0QWM1Zko2Ly9lNzRtLzNQajU5OCtlb2JrWVBqazFkdlh6N2YveHJxVjY5ZXlrczRQbnYxOWN1ai9TZmw0WXRYYWZWb05kdDR5UFBmK1BLWUg3MytuLzl6MmJFOWU3UDdZUGZPMTF3T2o1Kzlzem1YZC9KVmVYMjYrK0RuelZHMVcwZXRiOUhYN2VPNmowL1dQN21ldmZwNHZObktPZlBUczNzWEYrK2RmVHhlbkJ4WEo0anZYMlRuTFFEaTZHaDlkbkZvK29PZmQyTzkzbjJ3TzJRNTFQZEFoaDlzdG9aT1hNN2M3c1hKK3ZDVzNEdmErdlVpV21YdnhiTWw5bloxdURxN2pLTTRua2ptWXIvcCtIeitzejd5UDhmdWcvODlHejg1WEdJR1YwZG5rMUp0NUIrZEg0N2xrT0dmTDYrY25pMzUrNy8reTlLcnN4ZDJIK3ordi84NzNlTi8rYWZELy9YL2JLSnpOMGYrL3FQRi8vY2ZmL3hzODlmLytGLy8vY2t2TDM1NTljdlRYL1ovZWZ2TGs5VXZMMWEvdkZyOThuVDF5LzdxbHordC9zZDhrRit2bWxtUDJUK2JyYmZyVTR6L3kzWEk1SmpyRTlsVTNQOC9GUGJQdDUvdjA5N2VQa2w3NjhEcDVaaHRPVjVkRk14L3NQTU9mang2dXpxeUJ6dWJBSjk5T2Y3eDZES0o5Y0dQUnpzN2MvSTgySW4xZW43WVRJemwrczY4OW1CbnlNbVBSNmZIcnN2RjVWYzdQLys2blBUOTQ5Ri8yOW1YRHp1WDQ3NGpSN2F6bVJNN3NUN1p1WHpBNWZwRjcrem8rdWowL1BCNHpzdmxKams0MkRsZTIrbk82bWhIZHE1bThtZFQrRXNQUDlrNVcrOHMxdVBCL2Z2WG50bHBWMjJ0cC9kMWZhUitmSFo2LzNnSm5yMS8yZWk5djV5dnorVDAvbTkxeDh1TCs3NmN0OTNaSlhKd2NHOCsyZGJydjVFVHUraWNuMy9lZWI4NmU3UHoyYkdjeU9IcFo1ZWQ4SmtlbisvOCt1djJ4d2Z6NXM5MmZ2MzE1NTkzL01oMmZ2MzFYeEd4VWVsdEtac3J2MXZRWmFkdlNicTQ5UGVLMmd6bnhVdGRmL2lkUDc5Nm9SdWY3eEx5ZTlScVc1V08vV1NxMFYxYXRIZHdzSFAyWnJsOUV3VndXOWQyRHM5UHozYmV5RHUvczgwNStxdFl1ZjMvMXNsRjBMMFRPWHJ0djZtUFg4eDdYczViZmxNWnIxOWdTeVUzRDNtaGxQZDJEdVhEeGQvLzZtaitqV0g4ZTRieWI2dmt6bnlTelR0dHV2VGxYSXEzSG0xcEhhNC9YNHE3dWpRTjNtSzFOdTk4cFJxUC9lampZalV1Z3VaM3prNGtZcVU3NCtPT2VjajV3ZG1PZjVqOWZ6M0NkblhUSEZjN092MzlRemxCL1VyOTlONUZzNnVqMS9jdi9yeTNEUFBLcDdIWkRPYno3WGorbXlOKy9mUFAzdmFsbmFrRGQ0eTQrZEhIZTNQWU55OXpUODlQVHZ6bzdON1ZTMjBwd2ZIYXZ2Sk51T05GRngvS21iNzVZbVBORjNzOWI1cFBzeUNwSzNWNXRpbVBjdm54eWRXbmk3b3BWemRPZkxRMWV2ZXUrL1pXdzFmanVmVUFONy9aMmJuWno1ZnYvdG5tdlgvY25ScDFBYnVleStHMFhqL3VUaEYrODVITzF2L1JEL1R2K1JUenkzdW5IMC9QL1BEeWR3dlh2Tkg2VXNWRTF3Y1BkcjUrL0dKYi9MejF3VTdKUHg0dDBPSGlaVTRYc0xTWjN6Zng3QUxZeWpXNDJpMVBWN2NoM3AzM2JNR2dYWmkvdVc1dGR0MHRWTDM3ejlzQS80NGJMbUQzdjJ6b2doeXR3ay9QTG5IT2Y5djVhbGtJSHV4c0U0bDdGOUdXOTg4dVlOSHAvZXYxNEtNY0h2eVdCWDUrUGJIdW1vNzkzbDJ0ZkFLYTN2ako2bXhaWUsrNDBNV01YTnY1d1c4ODYrYU95L3BYOTY1VHBHNFNTVCtTY2VBMlZmSlNBYThEN0c3ZXV1eWwzbnUvS1Nwd2IrdUhaeWZuUG4vOCszcncvTlJQN2wwQnpudFhYL3dmZE9qMk1NK3JXM3p0RS94NXE0OS9rN1RkbExwYytnZS82WCtWOVdkNTdFOEg2ZE9odS9kZmQ1MjYwVG4vc1N2VXA0L3luM0Z0K2dmUDFQOXJ1ZW5mUHpuL05vZTlTVkxMcll1WGlMdzhYZDM2NW9wRHd1VlgyOHl3M0xoMFE4cC94QUQvMTJHSnYwOHRmaitiM0I3ZGJjcDJwU0QvZHFUdjc5U1lTLy83dlZQWEV6LzdtK2prcStXVzM2QmVsMTdzUzRHM3V2amZBUXpLOGZFMDdIZmVzUHZqMGFhalB0R3F0MzZ5Q1RqNDZYUjk5T1BSMVh0OWR2dTdCenYvbVhjZGZxOWUzQ1lBZDdwSnJ6cEw1VE9kUzlJdm01RzRtQXp6ZncrZlBIMzJmT2ZSazVldm5uMys3TkhlcXlmTDFjME4rOCtlUFh6NzZ0R2p2VmZ5ZXUvOXM0ZDdyNTk5L2ZENG14OWVQcmZUN3o5dlgveGxyRjhjaGZuN1BUMTQ5Tzc5KzBldnYzLzJwL1VQei83NlUzcXk5LzdaKzQyVVAvNzA1TzMrbzJkUDkrRHJKM3NmOW9ma2IxWS9mQVVmdnovOC9LY3Z2bnY0Y2VRMzVZdHZuNy81NHR1ekEvOEszbi8vN2NISC9ZZjAzZU5Yei82Ni8rckpoNHRuZWZYc3cvNWpmYi8vK2ZxN3g2LzI1emZ2Ly96NDZ0cjdmNjJWalpRNzIvcjg3ZnNuNzcvL3c4V1RQOXI3OHVvdEh1OTlxWSsvZkwzM1pIM3d0UHo1ek9KaUhmakx3VC9wbXplUFJubng3dXl2MzM3eDhQdnljRHlXdjM2QUg1NC9lZlg2YVg1Ny91NVZ2Zi80Mi8zRGQ2OWVQRDc4NnJ0WDYyY1A5OGZ4OC9kL2ZINzQ1ZGNiS1QrOHJ1ZDYvc2R2OGFlLy92U3RQSCswLzJUdi9lUFgzei8rNW1WNnNmZmxIKzQvM1B2eThkN3JKMC8zOS9wOEszdnkvc25EKysrLy9IeC9iLy9oWHZTTDN2M0RsOHN2L3Z6dzRmZFBQdi9UVjM4OGg1Tm5YeDgrTzN5NHByMHYzbjE3ZUo0NWYvM3g4VmY3ZSt1bmp4Nzk1ZWxYKzhRUDkvWWY3YVczZS90UHZuKzBrZkxzeTBmcjczcitwL3Q3N3o5L2pYRll6dVdRY3h6SXlXbm4rM1Q0UWZSTE9IcjMvWXZIN3c0UDlwNjkyWHNCK0k3K2VQem5SL3ZuWDU2OWVuZ3gwbzgrZkh1a0ovcnlwT0RYNzcvKzZmNDN6Lzk0T0g3WU8venI2NmRiS3ZmaytlUGZVTGgvemJIL0thRzZaUzc4VkU5V3k4SjRwZXM3bDdiM2RFZDJIdTN0alBNak8vQ2RzemR5dHFOeXRETjg1L3gwMHBuMXpqcy9XY1hIWmMxYzhOL0pFTDIzYkt2djZNSEtqODRteWZsSDJjTXRuSG5kenIzTlJQMTdiZk8vQStQOVczc3NmLy9xL0x2M1luYVhPS3BOL1N2ODUrdnQwTjBIdTlZdmdQbnVyLzlmQUFBQS8vOEVSRFduNGRnQUFBPT0=
kind: Secret
metadata:
  creationTimestamp: "2023-11-27T09:12:53Z"
  labels:
    modifiedAt: "1701076373"
    name: multitenancy-manager
    owner: helm
    status: deployed
    version: "2"
  name: sh.helm.release.v1.multitenancy-manager.v2
  namespace: d8-system
  resourceVersion: "12238414"
  uid: 1e845b21-47d6-4f51-9ae4-47792a5ecc79
type: helm.sh/release.v1
`), &sec)
			if err != nil {
				Fail(err.Error())
			}
			_, err = dependency.TestDC.K8sClient.CoreV1().Secrets("d8-system").Create(context.TODO(), sec, metav1.CreateOptions{})
			if err != nil {
				Fail(err.Error())
			}

			f.RunHook()
		})

		It("must adopt", func() {
			Expect(f).To(ExecuteSuccessfully())
			quota := f.KubernetesResource("ResourceQuota", "test-project", "test-project-all-pods")
			Expect(quota.ToYaml()).To(MatchYAML(`
apiVersion: v1
kind: ResourceQuota
metadata:
  annotations:
    meta.helm.sh/release-name: test-project
    meta.helm.sh/release-namespace: d8-multitenancy-manager
  labels:
    app.kubernetes.io/managed-by: Helm
  name: test-project-all-pods
  namespace: test-project
spec:
  hard:
    limits.cpu: "5"
    limits.memory: 5Gi
    requests.cpu: "5"
    requests.memory: 5Gi
    requests.storage: 1Gi
`))

			cm := f.KubernetesResource("ConfigMap", "test-project", "test-project-foo")
			Expect(cm.ToYaml()).To(MatchYAML(`
apiVersion: v1
kind: ConfigMap
metadata:
  annotations:
    meta.helm.sh/release-name: test-project
    meta.helm.sh/release-namespace: d8-multitenancy-manager
  labels:
    app.kubernetes.io/managed-by: Helm
    foo: bar
  name: test-project-foo
  namespace: test-project
`))

			nt := f.KubernetesResource("NetworkPolicy", "test-project", "test-project-deny-all-except-current-namespace")
			Expect(nt.ToYaml()).To(MatchYAML(`
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  annotations:
    meta.helm.sh/release-name: test-project
    meta.helm.sh/release-namespace: d8-multitenancy-manager
  labels:
    app.kubernetes.io/managed-by: Helm
  name: test-project-deny-all-except-current-namespace
  namespace: test-project
spec:
  egress: {}
`))

			ns := f.KubernetesGlobalResource("Namespace", "test-project")
			Expect(ns.ToYaml()).To(MatchYAML(
				`apiVersion: v1
kind: Namespace
metadata:
  annotations:
    meta.helm.sh/release-name: test-project
    meta.helm.sh/release-namespace: d8-multitenancy-manager
  labels:
    app.kubernetes.io/managed-by: Helm
    created-from-project-type: test-project-type
    kubernetes.io/metadata.name: test-project
  name: test-project
spec:
  finalizers:
  - kubernetes
`))

		})
	})
})
